Преглед на файлове

classref: Sync with current master branch (46a568e0a)

Rémi Verschelde преди 2 години
родител
ревизия
465dd176b6
променени са 100 файла, в които са добавени 6563 реда и са изтрити 2498 реда
  1. 335 63
      classes/[email protected]
  2. 401 291
      classes/[email protected]
  3. 1 1
      classes/class_aabb.rst
  4. 150 172
      classes/class_animation.rst
  5. 28 0
      classes/class_animationlibrary.rst
  6. 8 8
      classes/class_animationnode.rst
  7. 17 1
      classes/class_animationnodestatemachinetransition.rst
  8. 39 25
      classes/class_animationnodetransition.rst
  9. 56 18
      classes/class_animationplayer.rst
  10. 25 21
      classes/class_area2d.rst
  11. 24 20
      classes/class_area3d.rst
  12. 19 19
      classes/class_array.rst
  13. 1 1
      classes/class_arraymesh.rst
  14. 3 3
      classes/class_astar2d.rst
  15. 3 3
      classes/class_astar3d.rst
  16. 271 0
      classes/class_astargrid2d.rst
  17. 1 1
      classes/class_audioeffectchorus.rst
  18. 36 36
      classes/class_audioeffectdelay.rst
  19. 13 13
      classes/class_audioeffectrecord.rst
  20. 5 5
      classes/class_audioserver.rst
  21. 2 2
      classes/class_audiostream.rst
  22. 17 17
      classes/class_audiostreamoggvorbis.rst
  23. 1 1
      classes/class_audiostreamplayback.rst
  24. 3 3
      classes/class_audiostreamplaybackoggvorbis.rst
  25. 1 1
      classes/class_audiostreamplaybackresampled.rst
  26. 3 1
      classes/class_audiostreamplayer2d.rst
  27. 1 1
      classes/class_audiostreamplayer3d.rst
  28. 48 48
      classes/class_audiostreamwav.rst
  29. 40 8
      classes/class_basematerial3d.rst
  30. 0 10
      classes/class_basis.rst
  31. 26 26
      classes/class_bitmap.rst
  32. 1 1
      classes/class_bool.rst
  33. 1 1
      classes/class_button.rst
  34. 6 6
      classes/class_buttongroup.rst
  35. 5 0
      classes/class_callable.rst
  36. 7 5
      classes/class_camera3d.rst
  37. 12 12
      classes/class_cameraserver.rst
  38. 47 24
      classes/class_canvasitem.rst
  39. 1 1
      classes/class_canvasitemmaterial.rst
  40. 22 22
      classes/class_canvaslayer.rst
  41. 91 91
      classes/class_characterbody2d.rst
  42. 92 92
      classes/class_characterbody3d.rst
  43. 1 1
      classes/class_checkbox.rst
  44. 1 1
      classes/class_checkbutton.rst
  45. 8 8
      classes/class_classdb.rst
  46. 124 124
      classes/class_codeedit.rst
  47. 127 63
      classes/class_collisionobject2d.rst
  48. 90 46
      classes/class_collisionobject3d.rst
  49. 3 1
      classes/class_collisionshape2d.rst
  50. 3 1
      classes/class_collisionshape3d.rst
  51. 3 3
      classes/class_color.rst
  52. 3 1
      classes/class_concavepolygonshape2d.rst
  53. 3 1
      classes/class_concavepolygonshape3d.rst
  54. 25 17
      classes/class_conetwistjoint3d.rst
  55. 72 54
      classes/class_control.rst
  56. 4 4
      classes/class_cpuparticles2d.rst
  57. 13 5
      classes/class_cpuparticles3d.rst
  58. 1 1
      classes/class_cryptokey.rst
  59. 16 0
      classes/class_csgshape3d.rst
  60. 14 12
      classes/class_curve.rst
  61. 58 58
      classes/class_curve2d.rst
  62. 70 70
      classes/class_curve3d.rst
  63. 12 6
      classes/class_decal.rst
  64. 186 58
      classes/class_displayserver.rst
  65. 1 1
      classes/class_dtlsserver.rst
  66. 1 1
      classes/class_editorfeatureprofile.rst
  67. 2 2
      classes/class_editorimportplugin.rst
  68. 14 4
      classes/class_editorinterface.rst
  69. 3 3
      classes/class_editornode3dgizmo.rst
  70. 5 5
      classes/class_editornode3dgizmoplugin.rst
  71. 21 11
      classes/class_editorpaths.rst
  72. 132 132
      classes/class_editorplugin.rst
  73. 9 11
      classes/class_editorproperty.rst
  74. 2 2
      classes/class_editorresourcepicker.rst
  75. 2 2
      classes/class_editorselection.rst
  76. 2408 48
      classes/class_editorsettings.rst
  77. 6 6
      classes/class_editorsyntaxhighlighter.rst
  78. 184 0
      classes/class_editorundoredomanager.rst
  79. 294 71
      classes/class_editorvcsinterface.rst
  80. 36 36
      classes/class_enetconnection.rst
  81. 20 0
      classes/class_enetpacketpeer.rst
  82. 33 2
      classes/class_engine.rst
  83. 205 203
      classes/class_environment.rst
  84. 4 4
      classes/class_file.rst
  85. 1 1
      classes/class_filedialog.rst
  86. 4 4
      classes/class_float.rst
  87. 6 6
      classes/class_font.rst
  88. 17 17
      classes/class_fontfile.rst
  89. 42 18
      classes/class_generic6dofjoint3d.rst
  90. 62 52
      classes/class_geometry2d.rst
  91. 6 6
      classes/class_geometry3d.rst
  92. 6 6
      classes/class_geometryinstance3d.rst
  93. 94 10
      classes/class_gltfcamera.rst
  94. 56 0
      classes/class_gltflight.rst
  95. 4 4
      classes/class_gltfskeleton.rst
  96. 15 15
      classes/class_gltfskin.rst
  97. 20 0
      classes/class_gltfspecgloss.rst
  98. 139 123
      classes/class_gltfstate.rst
  99. 4 78
      classes/class_godotsharp.rst
  100. 5 5
      classes/class_gpuparticles2d.rst

+ 335 - 63
classes/[email protected]

@@ -19,6 +19,11 @@ A list of GDScript-specific utility functions accessed in any script.
 
 For the list of the global functions and constants see :ref:`@GlobalScope<class_@GlobalScope>`.
 
+Tutorials
+---------
+
+- :doc:`GDScript exports <../tutorials/scripting/gdscript/gdscript_exports>`
+
 Methods
 -------
 
@@ -31,11 +36,11 @@ Methods
 +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :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:`Object<class_Object>`         | :ref:`dict_to_inst<class_@GDScript_method_dict_to_inst>` **(** :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:`Dictionary<class_Dictionary>` | :ref:`inst_to_dict<class_@GDScript_method_inst_to_dict>` **(** :ref:`Object<class_Object>` instance **)**                                                           |
 +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`               | :ref:`len<class_@GDScript_method_len>` **(** :ref:`Variant<class_Variant>` var **)**                                                                                |
 +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -80,165 +85,425 @@ Constants
 Annotations
 -----------
 
-.. _class_@GDScript_annotation_export:
+.. _class_@GDScript_annotation_@export:
+
+- **@export** **(** **)**
+
+Mark the following property as exported (editable in the Inspector dock and saved to disk). To control the type of the exported property use the type hint notation.
 
-- :ref:`bool<class_bool>` **@export** **(** **)**
+::
+
+    @export var int_number = 5
+    @export var float_number: float = 5
 
 ----
 
-.. _class_@GDScript_annotation_export_category:
+.. _class_@GDScript_annotation_@export_category:
+
+- **@export_category** **(** :ref:`String<class_String>` name **)**
 
-- :ref:`bool<class_bool>` **@export_category** **(** :ref:`String<class_String>` name **)**
+Define a new category for the following exported properties. This helps to organize properties in the Inspector dock.
+
+See also :ref:`@GlobalScope.PROPERTY_USAGE_CATEGORY<class_@GlobalScope_constant_PROPERTY_USAGE_CATEGORY>`.
+
+::
+
+    @export_category("My Properties")
+    @export var number = 3
+    @export var string = ""
+
+\ **Note:** Categories in the property list are supposed to indicate different base types, so the use of this annotation is not encouraged. See :ref:`@export_group<class_@GDScript_annotation_@export_group>` and :ref:`@export_subgroup<class_@GDScript_annotation_@export_subgroup>` instead.
 
 ----
 
-.. _class_@GDScript_annotation_export_color_no_alpha:
+.. _class_@GDScript_annotation_@export_color_no_alpha:
+
+- **@export_color_no_alpha** **(** **)**
+
+Export a :ref:`Color<class_Color>` property without an alpha (fixed as ``1.0``).
 
-- :ref:`bool<class_bool>` **@export_color_no_alpha** **(** **)**
+See also :ref:`@GlobalScope.PROPERTY_HINT_COLOR_NO_ALPHA<class_@GlobalScope_constant_PROPERTY_HINT_COLOR_NO_ALPHA>`.
+
+::
+
+    @export_color_no_alpha var modulate_color: Color
 
 ----
 
-.. _class_@GDScript_annotation_export_dir:
+.. _class_@GDScript_annotation_@export_dir:
+
+- **@export_dir** **(** **)**
 
-- :ref:`bool<class_bool>` **@export_dir** **(** **)**
+Export a :ref:`String<class_String>` property as a path to a directory. The path will be limited to the project folder and its subfolders. See :ref:`@export_global_dir<class_@GDScript_annotation_@export_global_dir>` to allow picking from the entire filesystem.
+
+See also :ref:`@GlobalScope.PROPERTY_HINT_DIR<class_@GlobalScope_constant_PROPERTY_HINT_DIR>`.
+
+::
+
+    @export_dir var sprite_folder: String
 
 ----
 
-.. _class_@GDScript_annotation_export_enum:
+.. _class_@GDScript_annotation_@export_enum:
+
+- **@export_enum** **(** :ref:`String<class_String>` names, ... **)** |vararg|
 
-- :ref:`bool<class_bool>` **@export_enum** **(** :ref:`String<class_String>` names, ... **)** |vararg|
+Export a :ref:`String<class_String>` or integer property as an enumerated list of options. If the property is an integer field, then the index of the value is stored, in the same order the values are provided. You can add specific identifiers for allowed values using a colon.
+
+See also :ref:`@GlobalScope.PROPERTY_HINT_ENUM<class_@GlobalScope_constant_PROPERTY_HINT_ENUM>`.
+
+::
+
+    @export_enum("Rebecca", "Mary", "Leah") var character_name: String
+    @export_enum("Warrior", "Magician", "Thief") var character_class: int
+    @export_enum("Walking:30", "Running:60", "Riding:200") var character_speed: int
 
 ----
 
-.. _class_@GDScript_annotation_export_exp_easing:
+.. _class_@GDScript_annotation_@export_exp_easing:
+
+- **@export_exp_easing** **(** :ref:`String<class_String>` hints="", ... **)** |vararg|
 
-- :ref:`bool<class_bool>` **@export_exp_easing** **(** :ref:`String<class_String>` hints="", ... **)** |vararg|
+Export a floating-point property with an easing editor widget. Additional hints can be provided to adjust the behavior of the widget. ``"attenuation"`` flips the curve, which makes it more intuitive for editing attenuation properties. ``"positive_only"`` limits values to only be greater than or equal to zero.
+
+See also :ref:`@GlobalScope.PROPERTY_HINT_EXP_EASING<class_@GlobalScope_constant_PROPERTY_HINT_EXP_EASING>`.
+
+::
+
+    @export_exp_easing var transition_speed
+    @export_exp_easing("attenuation") var fading_attenuation
+    @export_exp_easing("positive_only") var effect_power
 
 ----
 
-.. _class_@GDScript_annotation_export_file:
+.. _class_@GDScript_annotation_@export_file:
+
+- **@export_file** **(** :ref:`String<class_String>` filter="", ... **)** |vararg|
 
-- :ref:`bool<class_bool>` **@export_file** **(** :ref:`String<class_String>` filter="", ... **)** |vararg|
+Export a :ref:`String<class_String>` property as a path to a file. The path will be limited to the project folder and its subfolders. See :ref:`@export_global_file<class_@GDScript_annotation_@export_global_file>` to allow picking from the entire filesystem.
+
+If ``filter`` is provided, only matching files will be available for picking.
+
+See also :ref:`@GlobalScope.PROPERTY_HINT_FILE<class_@GlobalScope_constant_PROPERTY_HINT_FILE>`.
+
+::
+
+    @export_file var sound_effect_file: String
+    @export_file("*.txt") var notes_file: String
 
 ----
 
-.. _class_@GDScript_annotation_export_flags:
+.. _class_@GDScript_annotation_@export_flags:
+
+- **@export_flags** **(** :ref:`String<class_String>` names, ... **)** |vararg|
+
+Export an integer property as a bit flag field. This allows to store several "checked" or ``true`` values with one property, and comfortably select them from the Inspector dock.
+
+See also :ref:`@GlobalScope.PROPERTY_HINT_FLAGS<class_@GlobalScope_constant_PROPERTY_HINT_FLAGS>`.
+
+::
 
-- :ref:`bool<class_bool>` **@export_flags** **(** :ref:`String<class_String>` names, ... **)** |vararg|
+    @export_flags("Fire", "Water", "Earth", "Wind") var spell_elements = 0
 
 ----
 
-.. _class_@GDScript_annotation_export_flags_2d_navigation:
+.. _class_@GDScript_annotation_@export_flags_2d_navigation:
+
+- **@export_flags_2d_navigation** **(** **)**
+
+Export an integer property as a bit flag field for 2D navigation layers. The widget in the Inspector dock will use the layer names defined in :ref:`ProjectSettings.layer_names/2d_navigation/layer_1<class_ProjectSettings_property_layer_names/2d_navigation/layer_1>`.
 
-- :ref:`bool<class_bool>` **@export_flags_2d_navigation** **(** **)**
+See also :ref:`@GlobalScope.PROPERTY_HINT_LAYERS_2D_NAVIGATION<class_@GlobalScope_constant_PROPERTY_HINT_LAYERS_2D_NAVIGATION>`.
+
+::
+
+    @export_flags_2d_navigation var navigation_layers: int
 
 ----
 
-.. _class_@GDScript_annotation_export_flags_2d_physics:
+.. _class_@GDScript_annotation_@export_flags_2d_physics:
+
+- **@export_flags_2d_physics** **(** **)**
+
+Export an integer property as a bit flag field for 2D physics layers. The widget in the Inspector dock will use the layer names defined in :ref:`ProjectSettings.layer_names/2d_physics/layer_1<class_ProjectSettings_property_layer_names/2d_physics/layer_1>`.
 
-- :ref:`bool<class_bool>` **@export_flags_2d_physics** **(** **)**
+See also :ref:`@GlobalScope.PROPERTY_HINT_LAYERS_2D_PHYSICS<class_@GlobalScope_constant_PROPERTY_HINT_LAYERS_2D_PHYSICS>`.
+
+::
+
+    @export_flags_2d_physics var physics_layers: int
 
 ----
 
-.. _class_@GDScript_annotation_export_flags_2d_render:
+.. _class_@GDScript_annotation_@export_flags_2d_render:
+
+- **@export_flags_2d_render** **(** **)**
 
-- :ref:`bool<class_bool>` **@export_flags_2d_render** **(** **)**
+Export an integer property as a bit flag field for 2D render layers. The widget in the Inspector dock will use the layer names defined in :ref:`ProjectSettings.layer_names/2d_render/layer_1<class_ProjectSettings_property_layer_names/2d_render/layer_1>`.
+
+See also :ref:`@GlobalScope.PROPERTY_HINT_LAYERS_2D_RENDER<class_@GlobalScope_constant_PROPERTY_HINT_LAYERS_2D_RENDER>`.
+
+::
+
+    @export_flags_2d_render var render_layers: int
 
 ----
 
-.. _class_@GDScript_annotation_export_flags_3d_navigation:
+.. _class_@GDScript_annotation_@export_flags_3d_navigation:
+
+- **@export_flags_3d_navigation** **(** **)**
 
-- :ref:`bool<class_bool>` **@export_flags_3d_navigation** **(** **)**
+Export an integer property as a bit flag field for 3D navigation layers. The widget in the Inspector dock will use the layer names defined in :ref:`ProjectSettings.layer_names/3d_navigation/layer_1<class_ProjectSettings_property_layer_names/3d_navigation/layer_1>`.
+
+See also :ref:`@GlobalScope.PROPERTY_HINT_LAYERS_3D_NAVIGATION<class_@GlobalScope_constant_PROPERTY_HINT_LAYERS_3D_NAVIGATION>`.
+
+::
+
+    @export_flags_3d_navigation var navigation_layers: int
 
 ----
 
-.. _class_@GDScript_annotation_export_flags_3d_physics:
+.. _class_@GDScript_annotation_@export_flags_3d_physics:
+
+- **@export_flags_3d_physics** **(** **)**
+
+Export an integer property as a bit flag field for 3D physics layers. The widget in the Inspector dock will use the layer names defined in :ref:`ProjectSettings.layer_names/3d_physics/layer_1<class_ProjectSettings_property_layer_names/3d_physics/layer_1>`.
 
-- :ref:`bool<class_bool>` **@export_flags_3d_physics** **(** **)**
+See also :ref:`@GlobalScope.PROPERTY_HINT_LAYERS_3D_PHYSICS<class_@GlobalScope_constant_PROPERTY_HINT_LAYERS_3D_PHYSICS>`.
+
+::
+
+    @export_flags_3d_physics var physics_layers: int
 
 ----
 
-.. _class_@GDScript_annotation_export_flags_3d_render:
+.. _class_@GDScript_annotation_@export_flags_3d_render:
+
+- **@export_flags_3d_render** **(** **)**
+
+Export an integer property as a bit flag field for 3D render layers. The widget in the Inspector dock will use the layer names defined in :ref:`ProjectSettings.layer_names/3d_render/layer_1<class_ProjectSettings_property_layer_names/3d_render/layer_1>`.
 
-- :ref:`bool<class_bool>` **@export_flags_3d_render** **(** **)**
+See also :ref:`@GlobalScope.PROPERTY_HINT_LAYERS_3D_RENDER<class_@GlobalScope_constant_PROPERTY_HINT_LAYERS_3D_RENDER>`.
+
+::
+
+    @export_flags_3d_render var render_layers: int
 
 ----
 
-.. _class_@GDScript_annotation_export_global_dir:
+.. _class_@GDScript_annotation_@export_global_dir:
+
+- **@export_global_dir** **(** **)**
 
-- :ref:`bool<class_bool>` **@export_global_dir** **(** **)**
+Export a :ref:`String<class_String>` property as a path to a directory. The path can be picked from the entire filesystem. See :ref:`@export_dir<class_@GDScript_annotation_@export_dir>` to limit it to the project folder and its subfolders.
+
+See also :ref:`@GlobalScope.PROPERTY_HINT_GLOBAL_DIR<class_@GlobalScope_constant_PROPERTY_HINT_GLOBAL_DIR>`.
+
+::
+
+    @export_global_dir var sprite_folder: String
 
 ----
 
-.. _class_@GDScript_annotation_export_global_file:
+.. _class_@GDScript_annotation_@export_global_file:
+
+- **@export_global_file** **(** :ref:`String<class_String>` filter="", ... **)** |vararg|
+
+Export a :ref:`String<class_String>` property as a path to a file. The path can be picked from the entire filesystem. See :ref:`@export_file<class_@GDScript_annotation_@export_file>` to limit it to the project folder and its subfolders.
+
+If ``filter`` is provided, only matching files will be available for picking.
+
+See also :ref:`@GlobalScope.PROPERTY_HINT_GLOBAL_FILE<class_@GlobalScope_constant_PROPERTY_HINT_GLOBAL_FILE>`.
+
+::
 
-- :ref:`bool<class_bool>` **@export_global_file** **(** :ref:`String<class_String>` filter="", ... **)** |vararg|
+    @export_global_file var sound_effect_file: String
+    @export_global_file("*.txt") var notes_file: String
 
 ----
 
-.. _class_@GDScript_annotation_export_group:
+.. _class_@GDScript_annotation_@export_group:
 
-- :ref:`bool<class_bool>` **@export_group** **(** :ref:`String<class_String>` name, :ref:`String<class_String>` prefix="" **)**
+- **@export_group** **(** :ref:`String<class_String>` name, :ref:`String<class_String>` prefix="" **)**
+
+Define a new group for the following exported properties. This helps to organize properties in the Inspector dock. Groups can be added with an optional ``prefix``, which would make group to only consider properties that have this prefix. The grouping will break on the first property that doesn't have a prefix. The prefix is also removed from the property's name in the Inspector dock.
+
+If no ``prefix`` is provided, the every following property is added to the group. The group ends when then next group or category is defined. You can also force end a group by using this annotation with empty strings for paramters, ``@export_group("", "")``.
+
+Groups cannot be nested, use :ref:`@export_subgroup<class_@GDScript_annotation_@export_subgroup>` to add subgroups to your groups.
+
+See also :ref:`@GlobalScope.PROPERTY_USAGE_GROUP<class_@GlobalScope_constant_PROPERTY_USAGE_GROUP>`.
+
+::
+
+    @export_group("My Properties")
+    @export var number = 3
+    @export var string = ""
+    
+    @export_group("Prefixed Properties", "prefix_")
+    @export var prefix_number = 3
+    @export var prefix_string = ""
+    
+    @export_group("", "")
+    @export var ungrouped_number = 3
 
 ----
 
-.. _class_@GDScript_annotation_export_multiline:
+.. _class_@GDScript_annotation_@export_multiline:
 
-- :ref:`bool<class_bool>` **@export_multiline** **(** **)**
+- **@export_multiline** **(** **)**
+
+Export a :ref:`String<class_String>` property with a large :ref:`TextEdit<class_TextEdit>` widget instead of a :ref:`LineEdit<class_LineEdit>`. This adds support for multiline content and makes it easier to edit large amount of text stored in the property.
+
+See also :ref:`@GlobalScope.PROPERTY_HINT_MULTILINE_TEXT<class_@GlobalScope_constant_PROPERTY_HINT_MULTILINE_TEXT>`.
+
+::
+
+    @export_multiline var character_bio
 
 ----
 
-.. _class_@GDScript_annotation_export_node_path:
+.. _class_@GDScript_annotation_@export_node_path:
+
+- **@export_node_path** **(** :ref:`String<class_String>` type="", ... **)** |vararg|
+
+Export a :ref:`NodePath<class_NodePath>` property with a filter for allowed node types.
+
+See also :ref:`@GlobalScope.PROPERTY_HINT_NODE_PATH_VALID_TYPES<class_@GlobalScope_constant_PROPERTY_HINT_NODE_PATH_VALID_TYPES>`.
+
+::
 
-- :ref:`bool<class_bool>` **@export_node_path** **(** :ref:`String<class_String>` type="", ... **)** |vararg|
+    @export_node_path(Button, TouchScreenButton) var some_button
 
 ----
 
-.. _class_@GDScript_annotation_export_placeholder:
+.. _class_@GDScript_annotation_@export_placeholder:
 
-- :ref:`bool<class_bool>` **@export_placeholder** **(** **)**
+- **@export_placeholder** **(** :ref:`String<class_String>` placeholder **)**
+
+Export a :ref:`String<class_String>` property with a placeholder text displayed in the editor widget when no value is present.
+
+See also :ref:`@GlobalScope.PROPERTY_HINT_PLACEHOLDER_TEXT<class_@GlobalScope_constant_PROPERTY_HINT_PLACEHOLDER_TEXT>`.
+
+::
+
+    @export_placeholder("Name in lowercase") var character_id: String
 
 ----
 
-.. _class_@GDScript_annotation_export_range:
+.. _class_@GDScript_annotation_@export_range:
+
+- **@export_range** **(** :ref:`float<class_float>` min, :ref:`float<class_float>` max, :ref:`float<class_float>` step=1.0, :ref:`String<class_String>` extra_hints="", ... **)** |vararg|
+
+Export a numeric property as a range value. The range must be defined by ``min`` and ``max``, as well as an optional ``step`` and a variety of extra hints. The ``step`` defaults to ``1`` for integer properties. For floating-point numbers this value depends on your ``EditorSettings.interface/inspector/default_float_step`` setting.
+
+If hints ``"or_greater"`` and ``"or_lesser"`` are provided, the editor widget will not cap the value at range boundaries. The ``"exp"`` hint will make the edited values on range to change exponentially. The ``"no_slider"`` hint will hide the slider element of the editor widget.
+
+Hints also allow to indicate the units for the edited value. Using ``"radians"`` you can specify that the actual value is in radians, but should be displayed in degrees in the Inspector dock. ``"degrees"`` allows to add a degree sign as a unit suffix. Finally, a custom suffix can be provided using ``"suffix:unit"``, where "unit" can be any string.
 
-- :ref:`bool<class_bool>` **@export_range** **(** :ref:`float<class_float>` min, :ref:`float<class_float>` max, :ref:`float<class_float>` step=1.0, :ref:`String<class_String>` extra_hints="", ... **)** |vararg|
+See also :ref:`@GlobalScope.PROPERTY_HINT_RANGE<class_@GlobalScope_constant_PROPERTY_HINT_RANGE>`.
+
+::
+
+    @export_range(0, 20) var number
+    @export_range(-10, 20) var number
+    @export_range(-10, 20, 0.2) var number: float
+    
+    @export_range(0, 100, 1, "or_greater") var power_percent
+    @export_range(0, 100, 1, "or_greater", "or_lesser") var health_delta
+    
+    @export_range(-3.14, 3.14, 0.001, "radians") var angle_radians
+    @export_range(0, 360, 1, "degrees") var angle_degrees
+    @export_range(-8, 8, 2, "suffix:px") var target_offset
 
 ----
 
-.. _class_@GDScript_annotation_export_subgroup:
+.. _class_@GDScript_annotation_@export_subgroup:
 
-- :ref:`bool<class_bool>` **@export_subgroup** **(** :ref:`String<class_String>` name, :ref:`String<class_String>` prefix="" **)**
+- **@export_subgroup** **(** :ref:`String<class_String>` name, :ref:`String<class_String>` prefix="" **)**
+
+Define a new subgroup for the following exported properties. This helps to organize properties in the Inspector dock. Subgroups work exactly like groups, except they need a parent group to exist. See :ref:`@export_group<class_@GDScript_annotation_@export_group>`.
+
+See also :ref:`@GlobalScope.PROPERTY_USAGE_SUBGROUP<class_@GlobalScope_constant_PROPERTY_USAGE_SUBGROUP>`.
+
+::
+
+    @export_group("My Properties")
+    @export var number = 3
+    @export var string = ""
+    
+    @export_subgroup("My Prefixed Properties", "prefix_")
+    @export var prefix_number = 3
+    @export var prefix_string = ""
+
+\ **Note:** Subgroups cannot be nested, they only provide one extra level of depth. Just like the next group ends the previous group, so do the subsequent subgroups.
 
 ----
 
-.. _class_@GDScript_annotation_icon:
+.. _class_@GDScript_annotation_@icon:
+
+- **@icon** **(** :ref:`String<class_String>` icon_path **)**
 
-- :ref:`bool<class_bool>` **@icon** **(** :ref:`String<class_String>` icon_path **)**
+Add a custom icon to the current script. The icon is displayed in the Scene dock for every node that the script is attached to. For named classes the icon is also displayed in various editor dialogs.
+
+::
+
+    @icon("res://path/to/class/icon.svg")
+
+\ **Note:** Only the script can have a custom icon. Inner classes are not supported yet.
 
 ----
 
-.. _class_@GDScript_annotation_onready:
+.. _class_@GDScript_annotation_@onready:
 
-- :ref:`bool<class_bool>` **@onready** **(** **)**
+- **@onready** **(** **)**
+
+Mark the following property as assigned on :ref:`Node<class_Node>`'s ready state change. Values for these properties are no assigned immediately upon the node's creation, and instead are computed and stored right before :ref:`Node._ready<class_Node_method__ready>`.
+
+::
+
+    @onready var character_name: Label = $Label
 
 ----
 
-.. _class_@GDScript_annotation_rpc:
+.. _class_@GDScript_annotation_@rpc:
+
+- **@rpc** **(** :ref:`String<class_String>` mode="", :ref:`String<class_String>` sync="", :ref:`String<class_String>` transfer_mode="", :ref:`int<class_int>` transfer_channel=0, ... **)** |vararg|
 
-- :ref:`bool<class_bool>` **@rpc** **(** :ref:`String<class_String>` mode="", :ref:`String<class_String>` sync="", :ref:`String<class_String>` transfer_mode="", :ref:`int<class_int>` transfer_channel=0, ... **)** |vararg|
+Mark the following method for remote procedure calls. See :doc:`High-level multiplayer <../tutorials/networking/high_level_multiplayer>`.
+
+::
+
+    @rpc()
 
 ----
 
-.. _class_@GDScript_annotation_tool:
+.. _class_@GDScript_annotation_@tool:
+
+- **@tool** **(** **)**
+
+Mark the current script as a tool script, allowing it to be loaded and executed by the editor. See :doc:`Running code in the editor <../tutorials/plugins/running_code_in_the_editor>`.
+
+::
 
-- :ref:`bool<class_bool>` **@tool** **(** **)**
+    @tool
+    extends Node
 
 ----
 
-.. _class_@GDScript_annotation_warning_ignore:
+.. _class_@GDScript_annotation_@warning_ignore:
+
+- **@warning_ignore** **(** :ref:`String<class_String>` warning, ... **)** |vararg|
+
+Mark the following statement to ignore the specified warning. See :doc:`GDScript warning system <../tutorials/scripting/gdscript/warning_system>`.
+
+::
 
-- :ref:`bool<class_bool>` **@warning_ignore** **(** :ref:`String<class_String>` warning, ... **)** |vararg|
+    func test():
+        print("hello")
+        return
+        @warning_ignore("unreachable_code")
+        print("unreachable")
 
 Method Descriptions
 -------------------
@@ -315,11 +580,11 @@ Converts from a type to another in the best way possible. The ``type`` parameter
 
 ----
 
-.. _class_@GDScript_method_dict2inst:
+.. _class_@GDScript_method_dict_to_inst:
 
-- :ref:`Object<class_Object>` **dict2inst** **(** :ref:`Dictionary<class_Dictionary>` dictionary **)**
+- :ref:`Object<class_Object>` **dict_to_inst** **(** :ref:`Dictionary<class_Dictionary>` dictionary **)**
 
-Converts a dictionary (previously created with :ref:`inst2dict<class_@GDScript_method_inst2dict>`) back to an instance. Useful for deserializing.
+Converts a ``dictionary`` (previously created with :ref:`inst_to_dict<class_@GDScript_method_inst_to_dict>`) back to an Object instance. Useful for deserializing.
 
 ----
 
@@ -350,17 +615,17 @@ would print
 
 ----
 
-.. _class_@GDScript_method_inst2dict:
+.. _class_@GDScript_method_inst_to_dict:
 
-- :ref:`Dictionary<class_Dictionary>` **inst2dict** **(** :ref:`Object<class_Object>` instance **)**
+- :ref:`Dictionary<class_Dictionary>` **inst_to_dict** **(** :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).
 
 ::
 
     var foo = "bar"
     func _ready():
-        var d = inst2dict(self)
+        var d = inst_to_dict(self)
         print(d.keys())
         print(d.values())
 
@@ -534,6 +799,13 @@ Converts one or more arguments to string in the best way possible.
 
 - :ref:`bool<class_bool>` **type_exists** **(** :ref:`StringName<class_StringName>` type **)**
 
+Returns whether the given :ref:`Object<class_Object>`-derived class exists in :ref:`ClassDB<class_ClassDB>`. Note that :ref:`Variant<class_Variant>` data types are not registered in :ref:`ClassDB<class_ClassDB>`.
+
+::
+
+    type_exists("Sprite2D") # Returns true
+    type_exists("NonExistentClass") # Returns false
+
 .. |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.)`

Файловите разлики са ограничени, защото са твърде много
+ 401 - 291
classes/[email protected]


+ 1 - 1
classes/class_aabb.rst

@@ -310,7 +310,7 @@ Returns the volume of the ``AABB``.
 
 - :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 number of units towards all the sides.
 
 ----
 

+ 150 - 172
classes/class_animation.rst

@@ -65,137 +65,133 @@ Properties
 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:`int<class_int>`                                      | :ref:`bezier_track_get_key_handle_mode<class_Animation_method_bezier_track_get_key_handle_mode>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** |const|                                                                                                                                                                                    |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :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:`HandleMode<enum_Animation_HandleMode>` handle_mode=1 **)** |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :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_handle_mode<class_Animation_method_bezier_track_set_key_handle_mode>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx, :ref:`HandleMode<enum_Animation_HandleMode>` key_handle_mode, :ref:`float<class_float>` balanced_value_time_ratio=1.0 **)**                                                                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| 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, :ref:`float<class_float>` balanced_value_time_ratio=1.0 **)**                                                                                              |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| 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, :ref:`float<class_float>` balanced_value_time_ratio=1.0 **)**                                                                                           |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| 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 **)**                                                                                                                                                                       |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                      | :ref:`blend_shape_track_insert_key<class_Animation_method_blend_shape_track_insert_key>` **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time, :ref:`float<class_float>` amount **)**                                                                                                                                                                 |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                       | :ref:`clear<class_Animation_method_clear>` **(** **)**                                                                                                                                                                                                                                                                                                                 |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                       | :ref:`compress<class_Animation_method_compress>` **(** :ref:`int<class_int>` page_size=8192, :ref:`int<class_int>` fps=120, :ref:`float<class_float>` split_tolerance=4.0 **)**                                                                                                                                                                                        |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| 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, :ref:`TrackType<enum_Animation_TrackType>` type **)** |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|                                                                                                                                                                                                      |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                      | :ref:`position_track_insert_key<class_Animation_method_position_track_insert_key>` **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time, :ref:`Vector3<class_Vector3>` position **)**                                                                                                                                                                 |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                       | :ref:`remove_track<class_Animation_method_remove_track>` **(** :ref:`int<class_int>` track_idx **)**                                                                                                                                                                                                                                                                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                      | :ref:`rotation_track_insert_key<class_Animation_method_rotation_track_insert_key>` **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time, :ref:`Quaternion<class_Quaternion>` rotation **)**                                                                                                                                                           |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                      | :ref:`scale_track_insert_key<class_Animation_method_scale_track_insert_key>` **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time, :ref:`Vector3<class_Vector3>` scale **)**                                                                                                                                                                          |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :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_compressed<class_Animation_method_track_is_compressed>` **(** :ref:`int<class_int>` track_idx **)** |const|                                                                                                                                                                                                                                             |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :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:`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 **)**                                                                                                                                                                                  |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :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, :ref:`float<class_float>` balanced_value_time_ratio=1.0 **)**                                  |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| 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, :ref:`float<class_float>` balanced_value_time_ratio=1.0 **)**                               |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| 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 **)**                                                                                                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                      | :ref:`blend_shape_track_insert_key<class_Animation_method_blend_shape_track_insert_key>` **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time, :ref:`float<class_float>` amount **)**                                                                                                     |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                       | :ref:`clear<class_Animation_method_clear>` **(** **)**                                                                                                                                                                                                                                                     |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                       | :ref:`compress<class_Animation_method_compress>` **(** :ref:`int<class_int>` page_size=8192, :ref:`int<class_int>` fps=120, :ref:`float<class_float>` split_tolerance=4.0 **)**                                                                                                                            |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| 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, :ref:`TrackType<enum_Animation_TrackType>` type **)** |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|                                                                                                                                          |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                      | :ref:`position_track_insert_key<class_Animation_method_position_track_insert_key>` **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time, :ref:`Vector3<class_Vector3>` position **)**                                                                                                     |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                       | :ref:`remove_track<class_Animation_method_remove_track>` **(** :ref:`int<class_int>` track_idx **)**                                                                                                                                                                                                       |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                      | :ref:`rotation_track_insert_key<class_Animation_method_rotation_track_insert_key>` **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time, :ref:`Quaternion<class_Quaternion>` rotation **)**                                                                                               |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                      | :ref:`scale_track_insert_key<class_Animation_method_scale_track_insert_key>` **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time, :ref:`Vector3<class_Vector3>` scale **)**                                                                                                              |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :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|                                                                                                                                                                                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                      | :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_compressed<class_Animation_method_track_is_compressed>` **(** :ref:`int<class_int>` track_idx **)** |const|                                                                                                                                                                                 |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :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:`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
 -------
@@ -259,6 +255,10 @@ enum **TrackType**:
 
 .. _class_Animation_constant_INTERPOLATION_CUBIC:
 
+.. _class_Animation_constant_INTERPOLATION_LINEAR_ANGLE:
+
+.. _class_Animation_constant_INTERPOLATION_CUBIC_ANGLE:
+
 enum **InterpolationType**:
 
 - **INTERPOLATION_NEAREST** = **0** --- No interpolation (nearest value).
@@ -267,6 +267,14 @@ enum **InterpolationType**:
 
 - **INTERPOLATION_CUBIC** = **2** --- Cubic interpolation.
 
+- **INTERPOLATION_LINEAR_ANGLE** = **3** --- Linear interpolation with shortest path rotation.
+
+\ **Note:** The result value is always normalized and may not match the key value.
+
+- **INTERPOLATION_CUBIC_ANGLE** = **4** --- Cubic interpolation with shortest path rotation.
+
+\ **Note:** The result value is always normalized and may not match the key value.
+
 ----
 
 .. _enum_Animation_UpdateMode:
@@ -307,20 +315,6 @@ enum **LoopMode**:
 
 - **LOOP_PINGPONG** = **2** --- Repeats playback and reverse playback at both ends of the animation.
 
-----
-
-.. _enum_Animation_HandleMode:
-
-.. _class_Animation_constant_HANDLE_MODE_FREE:
-
-.. _class_Animation_constant_HANDLE_MODE_BALANCED:
-
-enum **HandleMode**:
-
-- **HANDLE_MODE_FREE** = **0** --- Assigning the free handle mode to a Bezier Track's keyframe allows you to edit the keyframe's left and right handles independently from one another.
-
-- **HANDLE_MODE_BALANCED** = **1** --- Assigning the balanced handle mode to a Bezier Track's keyframe makes it so the two handles of the keyframe always stay aligned when changing either the keyframe's left or right handle.
-
 Property Descriptions
 ---------------------
 
@@ -441,7 +435,7 @@ Returns the audio stream of the key identified by ``key_idx``. The ``track_idx``
 
 Inserts an Audio Track key at the given ``time`` in seconds. The ``track_idx`` must be the index of an Audio Track.
 
-\ ``stream`` is the :ref:`AudioStream<class_AudioStream>` resource to play. ``start_offset`` is the number of seconds cut off at the beginning of the audio stream, while ``end_offset`` is at the ending.
+``stream`` is the :ref:`AudioStream<class_AudioStream>` resource to play. ``start_offset`` is the number of seconds cut off at the beginning of the audio stream, while ``end_offset`` is at the ending.
 
 ----
 
@@ -469,14 +463,6 @@ Sets the stream of the key identified by ``key_idx`` to value ``stream``. The ``
 
 ----
 
-.. _class_Animation_method_bezier_track_get_key_handle_mode:
-
-- :ref:`int<class_int>` **bezier_track_get_key_handle_mode** **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** |const|
-
-Returns the handle mode of the key identified by ``index``. See :ref:`HandleMode<enum_Animation_HandleMode>` for possible values. The ``track_idx`` must be the index of a Bezier Track.
-
-----
-
 .. _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|
@@ -503,11 +489,11 @@ Returns the value of the key identified by ``key_idx``. The ``track_idx`` must b
 
 .. _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:`HandleMode<enum_Animation_HandleMode>` handle_mode=1 **)**
+- :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.
 
-\ ``in_handle`` is the left-side weight of the added Bezier curve point, ``out_handle`` is the right-side one, while ``value`` is the actual value at this point.
+``in_handle`` is the left-side weight of the added Bezier curve point, ``out_handle`` is the right-side one, while ``value`` is the actual value at this point.
 
 ----
 
@@ -519,14 +505,6 @@ Returns the interpolated value at the given ``time`` (in seconds). The ``track_i
 
 ----
 
-.. _class_Animation_method_bezier_track_set_key_handle_mode:
-
-- void **bezier_track_set_key_handle_mode** **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx, :ref:`HandleMode<enum_Animation_HandleMode>` key_handle_mode, :ref:`float<class_float>` balanced_value_time_ratio=1.0 **)**
-
-Changes the handle mode of the keyframe at the given ``index``. See :ref:`HandleMode<enum_Animation_HandleMode>` for possible values. The ``track_idx`` must be the index of a Bezier Track.
-
-----
-
 .. _class_Animation_method_bezier_track_set_key_in_handle:
 
 - void **bezier_track_set_key_in_handle** **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx, :ref:`Vector2<class_Vector2>` in_handle, :ref:`float<class_float>` balanced_value_time_ratio=1.0 **)**
@@ -657,7 +635,7 @@ Finds the key index by time in a given track. Optionally, only find it if the ex
 
 - :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 ``track_idx`` wraps the interpolation loop. New tracks wrap the interpolation loop by default.
 
 ----
 
@@ -673,7 +651,7 @@ Returns the interpolation type of a given track.
 
 - :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 number of keys in a given track.
 
 ----
 
@@ -719,9 +697,9 @@ Gets the type of a track.
 
 .. _class_Animation_method_track_insert_key:
 
-- void **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:`int<class_int>` **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 **)**
 
-Insert a generic key in a given track.
+Inserts a generic key in a given track. Returns the key index.
 
 ----
 
@@ -735,7 +713,7 @@ Insert a generic key in a given track.
 
 - :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 ``track_idx`` is enabled.
 
 ----
 
@@ -759,7 +737,7 @@ Moves a track down.
 
 - void **track_move_to** **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` to_idx **)**
 
-Changes the index position of track ``idx`` to the one defined in ``to_idx``.
+Changes the index position of track ``track_idx`` to the one defined in ``to_idx``.
 
 ----
 
@@ -807,7 +785,7 @@ Sets the given track as imported or not.
 
 - void **track_set_interpolation_loop_wrap** **(** :ref:`int<class_int>` track_idx, :ref:`bool<class_bool>` interpolation **)**
 
-If ``true``, the track at ``idx`` wraps the interpolation loop.
+If ``true``, the track at ``track_idx`` wraps the interpolation loop.
 
 ----
 
@@ -857,7 +835,7 @@ For example, ``"character/skeleton:ankle"`` or ``"character/mesh:transform/local
 
 - void **track_swap** **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` with_idx **)**
 
-Swaps the track ``idx``'s index position with the track ``with_idx``.
+Swaps the track ``track_idx``'s index position with the track ``with_idx``.
 
 ----
 

+ 28 - 0
classes/class_animationlibrary.rst

@@ -12,7 +12,17 @@ AnimationLibrary
 
 **Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
+Container for :ref:`Animation<class_Animation>` resources.
 
+Description
+-----------
+
+An animation library stores a set of animations accessible through :ref:`StringName<class_StringName>` keys, for use with :ref:`AnimationPlayer<class_AnimationPlayer>` nodes.
+
+Tutorials
+---------
+
+- :doc:`Animation tutorial index <../tutorials/animation/index>`
 
 Properties
 ----------
@@ -45,18 +55,24 @@ Signals
 
 - **animation_added** **(** :ref:`StringName<class_StringName>` name **)**
 
+Emitted when an :ref:`Animation<class_Animation>` is added, under the key ``name``.
+
 ----
 
 .. _class_AnimationLibrary_signal_animation_removed:
 
 - **animation_removed** **(** :ref:`StringName<class_StringName>` name **)**
 
+Emitted when an :ref:`Animation<class_Animation>` stored with the key ``name`` is removed.
+
 ----
 
 .. _class_AnimationLibrary_signal_animation_renamed:
 
 - **animation_renamed** **(** :ref:`StringName<class_StringName>` name, :ref:`StringName<class_StringName>` to_name **)**
 
+Emitted when the key for an :ref:`Animation<class_Animation>` is changed, from ``name`` to ``to_name``.
+
 Property Descriptions
 ---------------------
 
@@ -75,36 +91,48 @@ Method Descriptions
 
 - :ref:`Error<enum_@GlobalScope_Error>` **add_animation** **(** :ref:`StringName<class_StringName>` name, :ref:`Animation<class_Animation>` animation **)**
 
+Adds the ``animation`` to the library, accesible by the key ``name``.
+
 ----
 
 .. _class_AnimationLibrary_method_get_animation:
 
 - :ref:`Animation<class_Animation>` **get_animation** **(** :ref:`StringName<class_StringName>` name **)** |const|
 
+Returns the :ref:`Animation<class_Animation>` with the key ``name``. If the animation does not exist, ``null`` is returned and an error is logged.
+
 ----
 
 .. _class_AnimationLibrary_method_get_animation_list:
 
 - :ref:`StringName[]<class_StringName>` **get_animation_list** **(** **)** |const|
 
+Returns the keys for the :ref:`Animation<class_Animation>`\ s stored in the library.
+
 ----
 
 .. _class_AnimationLibrary_method_has_animation:
 
 - :ref:`bool<class_bool>` **has_animation** **(** :ref:`StringName<class_StringName>` name **)** |const|
 
+Returns ``true`` if the library stores an :ref:`Animation<class_Animation>` with ``name`` as the key.
+
 ----
 
 .. _class_AnimationLibrary_method_remove_animation:
 
 - void **remove_animation** **(** :ref:`StringName<class_StringName>` name **)**
 
+Removes the :ref:`Animation<class_Animation>` with the key ``name``.
+
 ----
 
 .. _class_AnimationLibrary_method_rename_animation:
 
 - void **rename_animation** **(** :ref:`StringName<class_StringName>` name, :ref:`StringName<class_StringName>` newname **)**
 
+Changes the key of the :ref:`Animation<class_Animation>` associated with the key ``name`` to ``newname``.
+
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`

+ 8 - 8
classes/class_animationnode.rst

@@ -138,7 +138,7 @@ Method Descriptions
 
 - :ref:`String<class_String>` **_get_caption** **(** **)** |virtual| |const|
 
-Gets the text caption for this node (used by some editors).
+When inheriting from :ref:`AnimationRootNode<class_AnimationRootNode>`, implement this virtual method to override the text caption for this node.
 
 ----
 
@@ -146,7 +146,7 @@ Gets the text caption for this node (used by some editors).
 
 - :ref:`AnimationNode<class_AnimationNode>` **_get_child_by_name** **(** :ref:`StringName<class_StringName>` name **)** |virtual| |const|
 
-Gets a child node by index (used by editors inheriting from :ref:`AnimationRootNode<class_AnimationRootNode>`).
+When inheriting from :ref:`AnimationRootNode<class_AnimationRootNode>`, implement this virtual method to return a child node by its ``name``.
 
 ----
 
@@ -154,7 +154,7 @@ Gets a child node by index (used by editors inheriting from :ref:`AnimationRootN
 
 - :ref:`Dictionary<class_Dictionary>` **_get_child_nodes** **(** **)** |virtual| |const|
 
-Gets all children nodes in order as a ``name: node`` dictionary. Only useful when inheriting :ref:`AnimationRootNode<class_AnimationRootNode>`.
+When inheriting from :ref:`AnimationRootNode<class_AnimationRootNode>`, implement this virtual method to return all children nodes in order as a ``name: node`` dictionary.
 
 ----
 
@@ -162,7 +162,7 @@ Gets all children nodes in order as a ``name: node`` dictionary. Only useful whe
 
 - :ref:`Variant<class_Variant>` **_get_parameter_default_value** **(** :ref:`StringName<class_StringName>` parameter **)** |virtual| |const|
 
-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.
+When inheriting from :ref:`AnimationRootNode<class_AnimationRootNode>`, implement this virtual method to return the default value of a ``parameter``. Parameters are custom local memory used for your nodes, given a resource can be reused in multiple trees.
 
 ----
 
@@ -170,7 +170,7 @@ Gets the default value of a parameter. Parameters are custom local memory used f
 
 - :ref:`Array<class_Array>` **_get_parameter_list** **(** **)** |virtual| |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>`.
+When inheriting from :ref:`AnimationRootNode<class_AnimationRootNode>`, implement this virtual method to return a list of the properties on this node. 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>`.
 
 ----
 
@@ -178,7 +178,7 @@ Gets the property information for parameter. Parameters are custom local memory
 
 - :ref:`bool<class_bool>` **_has_filter** **(** **)** |virtual| |const|
 
-Returns whether you want the blend tree editor to display filter editing on this node.
+When inheriting from :ref:`AnimationRootNode<class_AnimationRootNode>`, implement this virtual method to return whether the blend tree editor should display filter editing on this node.
 
 ----
 
@@ -186,7 +186,7 @@ Returns whether you want the blend tree editor to display filter editing on this
 
 - :ref:`float<class_float>` **_process** **(** :ref:`float<class_float>` time, :ref:`bool<class_bool>` seek, :ref:`bool<class_bool>` seek_root **)** |virtual| |const|
 
-User-defined callback called when a custom node is processed. The ``time`` parameter is a relative delta, unless ``seek`` is ``true``, in which case it is absolute.
+When inheriting from :ref:`AnimationRootNode<class_AnimationRootNode>`, implement this virtual method to run some code when this 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.
 
@@ -206,7 +206,7 @@ Adds an input to the node. This is only useful for nodes created for use in an :
 
 - void **blend_animation** **(** :ref:`StringName<class_StringName>` animation, :ref:`float<class_float>` time, :ref:`float<class_float>` delta, :ref:`bool<class_bool>` seeked, :ref:`bool<class_bool>` seek_root, :ref:`float<class_float>` blend, :ref:`int<class_int>` pingponged=0 **)**
 
-Blend an animation by ``blend`` amount (name must be valid in the linked :ref:`AnimationPlayer<class_AnimationPlayer>`). A ``time`` and ``delta`` may be passed, as well as whether ``seek`` happened.
+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 ``seeked`` happened.
 
 ----
 

+ 17 - 1
classes/class_animationnodestatemachinetransition.rst

@@ -37,6 +37,8 @@ Properties
 +------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+------------------+
 | :ref:`SwitchMode<enum_AnimationNodeStateMachineTransition_SwitchMode>` | :ref:`switch_mode<class_AnimationNodeStateMachineTransition_property_switch_mode>`                                   | ``0``            |
 +------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+------------------+
+| :ref:`Curve<class_Curve>`                                              | :ref:`xfade_curve<class_AnimationNodeStateMachineTransition_property_xfade_curve>`                                   |                  |
++------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+------------------+
 | :ref:`float<class_float>`                                              | :ref:`xfade_time<class_AnimationNodeStateMachineTransition_property_xfade_time>`                                     | ``0.0``          |
 +------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+------------------+
 
@@ -83,7 +85,7 @@ Property Descriptions
 | *Getter*  | get_advance_condition()      |
 +-----------+------------------------------+
 
-Turn on auto advance when this condition is set. The provided name will become a boolean parameter on the :ref:`AnimationTree<class_AnimationTree>` that can be controlled from code (see `#controlling-from-code <../tutorials/animation/animation_tree.html#controlling-from-code>`__ in :doc:`../tutorials/animation/animation_tree`). For example, if :ref:`AnimationTree.tree_root<class_AnimationTree_property_tree_root>` is an :ref:`AnimationNodeStateMachine<class_AnimationNodeStateMachine>` and :ref:`advance_condition<class_AnimationNodeStateMachineTransition_property_advance_condition>` is set to ``"idle"``:
+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 `Using AnimationTree <../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::
@@ -196,6 +198,20 @@ The transition type.
 
 ----
 
+.. _class_AnimationNodeStateMachineTransition_property_xfade_curve:
+
+- :ref:`Curve<class_Curve>` **xfade_curve**
+
++----------+------------------------+
+| *Setter* | set_xfade_curve(value) |
++----------+------------------------+
+| *Getter* | get_xfade_curve()      |
++----------+------------------------+
+
+Ease curve for better control over cross-fade between this state and the next.
+
+----
+
 .. _class_AnimationNodeStateMachineTransition_property_xfade_time:
 
 - :ref:`float<class_float>` **xfade_time**

+ 39 - 25
classes/class_animationnodetransition.rst

@@ -31,13 +31,15 @@ Tutorials
 Properties
 ----------
 
-+---------------------------+------------------------------------------------------------------------+----------+
-| :ref:`bool<class_bool>`   | :ref:`from_start<class_AnimationNodeTransition_property_from_start>`   | ``true`` |
-+---------------------------+------------------------------------------------------------------------+----------+
-| :ref:`int<class_int>`     | :ref:`input_count<class_AnimationNodeTransition_property_input_count>` | ``0``    |
-+---------------------------+------------------------------------------------------------------------+----------+
-| :ref:`float<class_float>` | :ref:`xfade_time<class_AnimationNodeTransition_property_xfade_time>`   | ``0.0``  |
-+---------------------------+------------------------------------------------------------------------+----------+
++---------------------------+------------------------------------------------------------------------------+----------+
+| :ref:`int<class_int>`     | :ref:`enabled_inputs<class_AnimationNodeTransition_property_enabled_inputs>` | ``0``    |
++---------------------------+------------------------------------------------------------------------------+----------+
+| :ref:`bool<class_bool>`   | :ref:`from_start<class_AnimationNodeTransition_property_from_start>`         | ``true`` |
++---------------------------+------------------------------------------------------------------------------+----------+
+| :ref:`Curve<class_Curve>` | :ref:`xfade_curve<class_AnimationNodeTransition_property_xfade_curve>`       |          |
++---------------------------+------------------------------------------------------------------------------+----------+
+| :ref:`float<class_float>` | :ref:`xfade_time<class_AnimationNodeTransition_property_xfade_time>`         | ``0.0``  |
++---------------------------+------------------------------------------------------------------------------+----------+
 
 Methods
 -------
@@ -55,6 +57,22 @@ Methods
 Property Descriptions
 ---------------------
 
+.. _class_AnimationNodeTransition_property_enabled_inputs:
+
+- :ref:`int<class_int>` **enabled_inputs**
+
++-----------+---------------------------+
+| *Default* | ``0``                     |
++-----------+---------------------------+
+| *Setter*  | set_enabled_inputs(value) |
++-----------+---------------------------+
+| *Getter*  | get_enabled_inputs()      |
++-----------+---------------------------+
+
+The number of enabled input ports for this node.
+
+----
+
 .. _class_AnimationNodeTransition_property_from_start:
 
 - :ref:`bool<class_bool>` **from_start**
@@ -71,19 +89,15 @@ If ``true``, the destination animation is played back from the beginning when sw
 
 ----
 
-.. _class_AnimationNodeTransition_property_input_count:
+.. _class_AnimationNodeTransition_property_xfade_curve:
 
-- :ref:`int<class_int>` **input_count**
+- :ref:`Curve<class_Curve>` **xfade_curve**
 
-+-----------+---------------------------+
-| *Default* | ``0``                     |
-+-----------+---------------------------+
-| *Setter*  | set_enabled_inputs(value) |
-+-----------+---------------------------+
-| *Getter*  | get_enabled_inputs()      |
-+-----------+---------------------------+
-
-The number of available input ports for this node.
++----------+------------------------+
+| *Setter* | set_xfade_curve(value) |
++----------+------------------------+
+| *Getter* | get_xfade_curve()      |
++----------+------------------------+
 
 ----
 
@@ -91,13 +105,13 @@ The number of available input ports for this node.
 
 - :ref:`float<class_float>` **xfade_time**
 
-+-----------+----------------------------+
-| *Default* | ``0.0``                    |
-+-----------+----------------------------+
-| *Setter*  | set_cross_fade_time(value) |
-+-----------+----------------------------+
-| *Getter*  | get_cross_fade_time()      |
-+-----------+----------------------------+
++-----------+-----------------------+
+| *Default* | ``0.0``               |
++-----------+-----------------------+
+| *Setter*  | set_xfade_time(value) |
++-----------+-----------------------+
+| *Getter*  | get_xfade_time()      |
++-----------+-----------------------+
 
 Cross-fading time (in seconds) between each animation connected to the inputs.
 

+ 56 - 18
classes/class_animationplayer.rst

@@ -12,14 +12,16 @@ AnimationPlayer
 
 **Inherits:** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
-Container and player of :ref:`Animation<class_Animation>` resources.
+Player of :ref:`Animation<class_Animation>` resources.
 
 Description
 -----------
 
-An animation player is used for general-purpose playback of :ref:`Animation<class_Animation>` resources. It contains a dictionary of animations (referenced by name) and custom blend times between their transitions. Additionally, animations can be played and blended in different channels.
+An animation player is used for general-purpose playback of :ref:`Animation<class_Animation>` resources. It contains a dictionary of :ref:`AnimationLibrary<class_AnimationLibrary>` resources and custom blend times between animation transitions.
 
-\ ``AnimationPlayer`` is more suited than :ref:`Tween<class_Tween>` for animations where you know the final values in advance. For example, fading a screen in and out is more easily done with an ``AnimationPlayer`` node thanks to the animation tools provided by the editor. That particular example can also be implemented with a :ref:`Tween<class_Tween>` node, but it requires doing everything by code.
+Some methods and properties use a single key to refence an animation directly. These keys are formatted as the key for the library, followed by a forward slash, then the key for the animation whithin the library, for example ``"movement/run"``. If the library's key is an empty string (known as the default library), the forward slash is omitted, being the same key used by the library.
+
+\ ``AnimationPlayer`` is more suited than :ref:`Tween<class_Tween>` for animations where you know the final values in advance. For example, fading a screen in and out is more easily done with an ``AnimationPlayer`` node thanks to the animation tools provided by the editor. That particular example can also be implemented with a :ref:`Tween<class_Tween>`, but it requires doing everything by code.
 
 Updating the target properties of animations occurs at process time.
 
@@ -48,6 +50,8 @@ Properties
 +--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
 | :ref:`AnimationMethodCallMode<enum_AnimationPlayer_AnimationMethodCallMode>`   | :ref:`method_call_mode<class_AnimationPlayer_property_method_call_mode>`                       | ``0``              |
 +--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
+| :ref:`bool<class_bool>`                                                        | :ref:`movie_quit_on_finish<class_AnimationPlayer_property_movie_quit_on_finish>`               | ``false``          |
++--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
 | :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``            |
@@ -125,9 +129,9 @@ Signals
 
 - **animation_changed** **(** :ref:`StringName<class_StringName>` old_name, :ref:`StringName<class_StringName>` new_name **)**
 
-Emitted when a queued animation plays after the previous animation was finished. See :ref:`queue<class_AnimationPlayer_method_queue>`.
+Emitted when a queued animation plays after the previous animation finished. See :ref:`queue<class_AnimationPlayer_method_queue>`.
 
-\ **Note:** The signal is not emitted when the animation is changed via :ref:`play<class_AnimationPlayer_method_play>` or from :ref:`AnimationTree<class_AnimationTree>`.
+\ **Note:** The signal is not emitted when the animation is changed via :ref:`play<class_AnimationPlayer_method_play>` or by an :ref:`AnimationTree<class_AnimationTree>`.
 
 ----
 
@@ -137,6 +141,8 @@ Emitted when a queued animation plays after the previous animation was finished.
 
 Notifies when an animation finished playing.
 
+\ **Note:** This signal is not emitted if an animation is looping.
+
 ----
 
 .. _class_AnimationPlayer_signal_animation_started:
@@ -199,7 +205,7 @@ Property Descriptions
 | *Getter* | get_assigned_animation()      |
 +----------+-------------------------------+
 
-If playing, the current animation; otherwise, the animation last played. When set, would change the animation, but would not play it unless currently playing. See also :ref:`current_animation<class_AnimationPlayer_property_current_animation>`.
+If playing, the the current animation's key, otherwise, the animation last played. When set, this changes the animation, but will not play it unless already playing. See also :ref:`current_animation<class_AnimationPlayer_property_current_animation>`.
 
 ----
 
@@ -215,7 +221,7 @@ If playing, the current animation; otherwise, the animation last played. When se
 | *Getter*  | get_autoplay()      |
 +-----------+---------------------+
 
-The name of the animation to play when the scene loads.
+The key of the animation to play when the scene loads.
 
 ----
 
@@ -231,7 +237,7 @@ The name of the animation to play when the scene loads.
 | *Getter*  | get_current_animation()      |
 +-----------+------------------------------+
 
-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.
+The key 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>`.
 
@@ -245,7 +251,7 @@ The name of the currently playing animation. If no animation is playing, the pro
 | *Getter* | get_current_animation_length() |
 +----------+--------------------------------+
 
-The length (in seconds) of the currently being played animation.
+The length (in seconds) of the currently playing animation.
 
 ----
 
@@ -277,6 +283,24 @@ The call mode to use for Call Method tracks.
 
 ----
 
+.. _class_AnimationPlayer_property_movie_quit_on_finish:
+
+- :ref:`bool<class_bool>` **movie_quit_on_finish**
+
++-----------+-----------------------------------------+
+| *Default* | ``false``                               |
++-----------+-----------------------------------------+
+| *Setter*  | set_movie_quit_on_finish_enabled(value) |
++-----------+-----------------------------------------+
+| *Getter*  | is_movie_quit_on_finish_enabled()       |
++-----------+-----------------------------------------+
+
+If ``true`` and the engine is running in Movie Maker mode (see :ref:`MovieWriter<class_MovieWriter>`), exits the engine with :ref:`SceneTree.quit<class_SceneTree_method_quit>` as soon as an animation is done playing in this ``AnimationPlayer``. A message is printed when the engine quits for this reason.
+
+\ **Note:** This obeys the same logic as the :ref:`animation_finished<class_AnimationPlayer_signal_animation_finished>` signal, so it will not quit the engine if the animation is set to be looping.
+
+----
+
 .. _class_AnimationPlayer_property_playback_active:
 
 - :ref:`bool<class_bool>` **playback_active**
@@ -351,9 +375,9 @@ The speed scaling ratio. For instance, if this value is 1, then the animation pl
 | *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.
+This is used by the editor. If set to ``true``, the scene will be saved with the effects of the reset animation (the animation with the key ``"RESET"``) applied as if it had been seeked to time 0, with the editor keeping the values that the scene had before 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.
+This makes it more convenient to preview and edit animations in the editor, as changes to the scene will not be saved as long as they are set in the reset animation.
 
 ----
 
@@ -378,6 +402,8 @@ Method Descriptions
 
 - :ref:`Error<enum_@GlobalScope_Error>` **add_animation_library** **(** :ref:`StringName<class_StringName>` name, :ref:`AnimationLibrary<class_AnimationLibrary>` library **)**
 
+Adds ``library`` to the animation player, under the key ``name``.
+
 ----
 
 .. _class_AnimationPlayer_method_advance:
@@ -392,7 +418,7 @@ Shifts position in the animation timeline and immediately updates the animation.
 
 - :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 key of the animation which is queued to play after the ``anim_from`` animation.
 
 ----
 
@@ -424,7 +450,7 @@ Clears all queued, unplayed animations.
 
 - :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 key of ``animation`` or an empty :ref:`StringName<class_StringName>` if not found.
 
 ----
 
@@ -432,13 +458,15 @@ Returns the name of ``animation`` or an empty string if not found.
 
 - :ref:`StringName<class_StringName>` **find_animation_library** **(** :ref:`Animation<class_Animation>` animation **)** |const|
 
+Returns the key for the :ref:`AnimationLibrary<class_AnimationLibrary>` that contains ``animation`` or an empty :ref:`StringName<class_StringName>` if not found.
+
 ----
 
 .. _class_AnimationPlayer_method_get_animation:
 
 - :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 the key ``name``. If the animation does not exist, ``null`` is returned and an error is logged.
 
 ----
 
@@ -446,19 +474,23 @@ Returns the :ref:`Animation<class_Animation>` with key ``name`` or ``null`` if n
 
 - :ref:`AnimationLibrary<class_AnimationLibrary>` **get_animation_library** **(** :ref:`StringName<class_StringName>` name **)** |const|
 
+Returns the first :ref:`AnimationLibrary<class_AnimationLibrary>` with key ``name`` or ``null`` if not found.
+
 ----
 
 .. _class_AnimationPlayer_method_get_animation_library_list:
 
 - :ref:`StringName[]<class_StringName>` **get_animation_library_list** **(** **)** |const|
 
+Returns the list of stored library keys.
+
 ----
 
 .. _class_AnimationPlayer_method_get_animation_list:
 
 - :ref:`PackedStringArray<class_PackedStringArray>` **get_animation_list** **(** **)** |const|
 
-Returns the list of stored animation names.
+Returns the list of stored animation keys.
 
 ----
 
@@ -466,7 +498,7 @@ Returns the list of stored animation names.
 
 - :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 keys.
 
 ----
 
@@ -482,7 +514,7 @@ Gets the actual playing speed of current animation or 0 if not playing. This spe
 
 - :ref:`PackedStringArray<class_PackedStringArray>` **get_queue** **(** **)**
 
-Returns a list of the animation names that are currently queued to play.
+Returns a list of the animation keys that are currently queued to play.
 
 ----
 
@@ -498,6 +530,8 @@ Returns ``true`` if the ``AnimationPlayer`` stores an :ref:`Animation<class_Anim
 
 - :ref:`bool<class_bool>` **has_animation_library** **(** :ref:`StringName<class_StringName>` name **)** |const|
 
+Returns ``true`` if the ``AnimationPlayer`` stores an :ref:`AnimationLibrary<class_AnimationLibrary>` with key ``name``.
+
 ----
 
 .. _class_AnimationPlayer_method_is_playing:
@@ -544,12 +578,16 @@ Queues an animation for playback once the current one is done.
 
 - void **remove_animation_library** **(** :ref:`StringName<class_StringName>` name **)**
 
+Removes the :ref:`AnimationLibrary<class_AnimationLibrary>` assosiated with the key ``name``.
+
 ----
 
 .. _class_AnimationPlayer_method_rename_animation_library:
 
 - void **rename_animation_library** **(** :ref:`StringName<class_StringName>` name, :ref:`StringName<class_StringName>` newname **)**
 
+Moves the :ref:`AnimationLibrary<class_AnimationLibrary>` associated with the key ``name`` to the key ``newname``.
+
 ----
 
 .. _class_AnimationPlayer_method_seek:
@@ -566,7 +604,7 @@ Seeks the animation to the ``seconds`` point in time (in seconds). If ``update``
 
 - void **set_blend_time** **(** :ref:`StringName<class_StringName>` anim_from, :ref:`StringName<class_StringName>` anim_to, :ref:`float<class_float>` sec **)**
 
-Specifies a blend time (in seconds) between two animations, referenced by their names.
+Specifies a blend time (in seconds) between two animations, referenced by their keys.
 
 ----
 

+ 25 - 21
classes/class_area2d.rst

@@ -17,7 +17,11 @@ Area2D
 Description
 -----------
 
-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.
+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 custom audio buses.
+
+To give the area its shape, add a :ref:`CollisionShape2D<class_CollisionShape2D>` or a :ref:`CollisionPolygon2D<class_CollisionPolygon2D>` node as a *direct* child (or add multiple such nodes as direct children) of the area.
+
+\ **Warning:** See :ref:`ConcavePolygonShape2D<class_ConcavePolygonShape2D>` for a warning about possibly unexpected behavior when using that shape for an area.
 
 Tutorials
 ---------
@@ -87,7 +91,7 @@ Signals
 
 Emitted when another Area2D enters this Area2D. Requires :ref:`monitoring<class_Area2D_property_monitoring>` to be set to ``true``.
 
-\ ``area`` the other Area2D.
+``area`` the other Area2D.
 
 ----
 
@@ -97,7 +101,7 @@ Emitted when another Area2D enters this Area2D. Requires :ref:`monitoring<class_
 
 Emitted when another Area2D exits this Area2D. Requires :ref:`monitoring<class_Area2D_property_monitoring>` to be set to ``true``.
 
-\ ``area`` the other Area2D.
+``area`` the other Area2D.
 
 ----
 
@@ -107,13 +111,13 @@ Emitted when another Area2D exits this Area2D. Requires :ref:`monitoring<class_A
 
 Emitted when one of another Area2D's :ref:`Shape2D<class_Shape2D>`\ s enters one of this Area2D's :ref:`Shape2D<class_Shape2D>`\ s. Requires :ref:`monitoring<class_Area2D_property_monitoring>` to be set to ``true``.
 
-\ ``area_rid`` the :ref:`RID<class_RID>` of the other Area2D's :ref:`CollisionObject2D<class_CollisionObject2D>` used by the :ref:`PhysicsServer2D<class_PhysicsServer2D>`.
+``area_rid`` 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.
+``area`` the other Area2D.
 
-\ ``area_shape_index`` the index of the :ref:`Shape2D<class_Shape2D>` of the other Area2D used by the :ref:`PhysicsServer2D<class_PhysicsServer2D>`. Get the :ref:`CollisionShape2D<class_CollisionShape2D>` node with ``area.shape_owner_get_owner(area.shape_find_owner(area_shape_index))``.
+``area_shape_index`` the index of the :ref:`Shape2D<class_Shape2D>` of the other Area2D used by the :ref:`PhysicsServer2D<class_PhysicsServer2D>`. Get the :ref:`CollisionShape2D<class_CollisionShape2D>` node with ``area.shape_owner_get_owner(area.shape_find_owner(area_shape_index))``.
 
-\ ``local_shape_index`` the index of the :ref:`Shape2D<class_Shape2D>` of this Area2D used by the :ref:`PhysicsServer2D<class_PhysicsServer2D>`. Get the :ref:`CollisionShape2D<class_CollisionShape2D>` node with ``self.shape_owner_get_owner(self.shape_find_owner(local_shape_index))``.
+``local_shape_index`` the index of the :ref:`Shape2D<class_Shape2D>` of this Area2D used by the :ref:`PhysicsServer2D<class_PhysicsServer2D>`. Get the :ref:`CollisionShape2D<class_CollisionShape2D>` node with ``self.shape_owner_get_owner(self.shape_find_owner(local_shape_index))``.
 
 ----
 
@@ -123,13 +127,13 @@ Emitted when one of another Area2D's :ref:`Shape2D<class_Shape2D>`\ s enters one
 
 Emitted when one of another Area2D's :ref:`Shape2D<class_Shape2D>`\ s exits one of this Area2D's :ref:`Shape2D<class_Shape2D>`\ s. Requires :ref:`monitoring<class_Area2D_property_monitoring>` to be set to ``true``.
 
-\ ``area_rid`` the :ref:`RID<class_RID>` of the other Area2D's :ref:`CollisionObject2D<class_CollisionObject2D>` used by the :ref:`PhysicsServer2D<class_PhysicsServer2D>`.
+``area_rid`` 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.
+``area`` the other Area2D.
 
-\ ``area_shape_index`` the index of the :ref:`Shape2D<class_Shape2D>` of the other Area2D used by the :ref:`PhysicsServer2D<class_PhysicsServer2D>`. Get the :ref:`CollisionShape2D<class_CollisionShape2D>` node with ``area.shape_owner_get_owner(area.shape_find_owner(area_shape_index))``.
+``area_shape_index`` the index of the :ref:`Shape2D<class_Shape2D>` of the other Area2D used by the :ref:`PhysicsServer2D<class_PhysicsServer2D>`. Get the :ref:`CollisionShape2D<class_CollisionShape2D>` node with ``area.shape_owner_get_owner(area.shape_find_owner(area_shape_index))``.
 
-\ ``local_shape_index`` the index of the :ref:`Shape2D<class_Shape2D>` of this Area2D used by the :ref:`PhysicsServer2D<class_PhysicsServer2D>`. Get the :ref:`CollisionShape2D<class_CollisionShape2D>` node with ``self.shape_owner_get_owner(self.shape_find_owner(local_shape_index))``.
+``local_shape_index`` the index of the :ref:`Shape2D<class_Shape2D>` of this Area2D used by the :ref:`PhysicsServer2D<class_PhysicsServer2D>`. Get the :ref:`CollisionShape2D<class_CollisionShape2D>` node with ``self.shape_owner_get_owner(self.shape_find_owner(local_shape_index))``.
 
 ----
 
@@ -139,7 +143,7 @@ Emitted when one of another Area2D's :ref:`Shape2D<class_Shape2D>`\ s exits one
 
 Emitted when a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>` enters this Area2D. Requires :ref:`monitoring<class_Area2D_property_monitoring>` to be set to ``true``. :ref:`TileMap<class_TileMap>`\ s are detected if the :ref:`TileSet<class_TileSet>` has Collision :ref:`Shape2D<class_Shape2D>`\ s.
 
-\ ``body`` the :ref:`Node<class_Node>`, if it exists in the tree, of the other :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>`.
+``body`` the :ref:`Node<class_Node>`, if it exists in the tree, of the other :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>`.
 
 ----
 
@@ -149,7 +153,7 @@ Emitted when a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_
 
 Emitted when a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>` exits this Area2D. Requires :ref:`monitoring<class_Area2D_property_monitoring>` to be set to ``true``. :ref:`TileMap<class_TileMap>`\ s are detected if the :ref:`TileSet<class_TileSet>` has Collision :ref:`Shape2D<class_Shape2D>`\ s.
 
-\ ``body`` the :ref:`Node<class_Node>`, if it exists in the tree, of the other :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>`.
+``body`` the :ref:`Node<class_Node>`, if it exists in the tree, of the other :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>`.
 
 ----
 
@@ -159,13 +163,13 @@ Emitted when a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_
 
 Emitted when one of a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>`'s :ref:`Shape2D<class_Shape2D>`\ s enters one of this Area2D's :ref:`Shape2D<class_Shape2D>`\ s. Requires :ref:`monitoring<class_Area2D_property_monitoring>` to be set to ``true``. :ref:`TileMap<class_TileMap>`\ s are detected if the :ref:`TileSet<class_TileSet>` has Collision :ref:`Shape2D<class_Shape2D>`\ s.
 
-\ ``body_rid`` the :ref:`RID<class_RID>` of the :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileSet<class_TileSet>`'s :ref:`CollisionObject2D<class_CollisionObject2D>` used by the :ref:`PhysicsServer2D<class_PhysicsServer2D>`.
+``body_rid`` the :ref:`RID<class_RID>` of the :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileSet<class_TileSet>`'s :ref:`CollisionObject2D<class_CollisionObject2D>` used by the :ref:`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>`.
+``body`` the :ref:`Node<class_Node>`, if it exists in the tree, of the :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>`.
 
-\ ``body_shape_index`` the index of the :ref:`Shape2D<class_Shape2D>` of the :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>` used by the :ref:`PhysicsServer2D<class_PhysicsServer2D>`. Get the :ref:`CollisionShape2D<class_CollisionShape2D>` node with ``body.shape_owner_get_owner(body.shape_find_owner(body_shape_index))``.
+``body_shape_index`` the index of the :ref:`Shape2D<class_Shape2D>` of the :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>` used by the :ref:`PhysicsServer2D<class_PhysicsServer2D>`. Get the :ref:`CollisionShape2D<class_CollisionShape2D>` node with ``body.shape_owner_get_owner(body.shape_find_owner(body_shape_index))``.
 
-\ ``local_shape_index`` the index of the :ref:`Shape2D<class_Shape2D>` of this Area2D used by the :ref:`PhysicsServer2D<class_PhysicsServer2D>`. Get the :ref:`CollisionShape2D<class_CollisionShape2D>` node with ``self.shape_owner_get_owner(self.shape_find_owner(local_shape_index))``.
+``local_shape_index`` the index of the :ref:`Shape2D<class_Shape2D>` of this Area2D used by the :ref:`PhysicsServer2D<class_PhysicsServer2D>`. Get the :ref:`CollisionShape2D<class_CollisionShape2D>` node with ``self.shape_owner_get_owner(self.shape_find_owner(local_shape_index))``.
 
 ----
 
@@ -175,13 +179,13 @@ Emitted when one of a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap
 
 Emitted when one of a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>`'s :ref:`Shape2D<class_Shape2D>`\ s exits one of this Area2D's :ref:`Shape2D<class_Shape2D>`\ s. Requires :ref:`monitoring<class_Area2D_property_monitoring>` to be set to ``true``. :ref:`TileMap<class_TileMap>`\ s are detected if the :ref:`TileSet<class_TileSet>` has Collision :ref:`Shape2D<class_Shape2D>`\ s.
 
-\ ``body_rid`` the :ref:`RID<class_RID>` of the :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileSet<class_TileSet>`'s :ref:`CollisionObject2D<class_CollisionObject2D>` used by the :ref:`PhysicsServer2D<class_PhysicsServer2D>`.
+``body_rid`` the :ref:`RID<class_RID>` of the :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileSet<class_TileSet>`'s :ref:`CollisionObject2D<class_CollisionObject2D>` used by the :ref:`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>`.
+``body`` the :ref:`Node<class_Node>`, if it exists in the tree, of the :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>`.
 
-\ ``body_shape_index`` the index of the :ref:`Shape2D<class_Shape2D>` of the :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>` used by the :ref:`PhysicsServer2D<class_PhysicsServer2D>`. Get the :ref:`CollisionShape2D<class_CollisionShape2D>` node with ``body.shape_owner_get_owner(body.shape_find_owner(body_shape_index))``.
+``body_shape_index`` the index of the :ref:`Shape2D<class_Shape2D>` of the :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>` used by the :ref:`PhysicsServer2D<class_PhysicsServer2D>`. Get the :ref:`CollisionShape2D<class_CollisionShape2D>` node with ``body.shape_owner_get_owner(body.shape_find_owner(body_shape_index))``.
 
-\ ``local_shape_index`` the index of the :ref:`Shape2D<class_Shape2D>` of this Area2D used by the :ref:`PhysicsServer2D<class_PhysicsServer2D>`. Get the :ref:`CollisionShape2D<class_CollisionShape2D>` node with ``self.shape_owner_get_owner(self.shape_find_owner(local_shape_index))``.
+``local_shape_index`` the index of the :ref:`Shape2D<class_Shape2D>` of this Area2D used by the :ref:`PhysicsServer2D<class_PhysicsServer2D>`. Get the :ref:`CollisionShape2D<class_CollisionShape2D>` node with ``self.shape_owner_get_owner(self.shape_find_owner(local_shape_index))``.
 
 Enumerations
 ------------

+ 24 - 20
classes/class_area3d.rst

@@ -19,6 +19,10 @@ 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.
 
+To give the area its shape, add a :ref:`CollisionShape3D<class_CollisionShape3D>` or a :ref:`CollisionPolygon3D<class_CollisionPolygon3D>` node as a *direct* child (or add multiple such nodes as direct children) of the area.
+
+\ **Warning:** See :ref:`ConcavePolygonShape3D<class_ConcavePolygonShape3D>` (also called "trimesh") for a warning about possibly unexpected behavior when using that shape for an area.
+
 Tutorials
 ---------
 
@@ -97,7 +101,7 @@ Signals
 
 Emitted when another Area3D enters this Area3D. Requires :ref:`monitoring<class_Area3D_property_monitoring>` to be set to ``true``.
 
-\ ``area`` the other Area3D.
+``area`` the other Area3D.
 
 ----
 
@@ -107,7 +111,7 @@ Emitted when another Area3D enters this Area3D. Requires :ref:`monitoring<class_
 
 Emitted when another Area3D exits this Area3D. Requires :ref:`monitoring<class_Area3D_property_monitoring>` to be set to ``true``.
 
-\ ``area`` the other Area3D.
+``area`` the other Area3D.
 
 ----
 
@@ -117,13 +121,13 @@ Emitted when another Area3D exits this Area3D. Requires :ref:`monitoring<class_A
 
 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_rid`` the :ref:`RID<class_RID>` of the other Area3D's :ref:`CollisionObject3D<class_CollisionObject3D>` used by the :ref:`PhysicsServer3D<class_PhysicsServer3D>`.
+``area_rid`` 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`` the other Area3D.
 
-\ ``area_shape_index`` the index of the :ref:`Shape3D<class_Shape3D>` of the other Area3D used by the :ref:`PhysicsServer3D<class_PhysicsServer3D>`. Get the :ref:`CollisionShape3D<class_CollisionShape3D>` node with ``area.shape_owner_get_owner(area.shape_find_owner(area_shape_index))``.
+``area_shape_index`` the index of the :ref:`Shape3D<class_Shape3D>` of the other Area3D used by the :ref:`PhysicsServer3D<class_PhysicsServer3D>`. Get the :ref:`CollisionShape3D<class_CollisionShape3D>` node with ``area.shape_owner_get_owner(area.shape_find_owner(area_shape_index))``.
 
-\ ``local_shape_index`` the index of the :ref:`Shape3D<class_Shape3D>` of this Area3D used by the :ref:`PhysicsServer3D<class_PhysicsServer3D>`. Get the :ref:`CollisionShape3D<class_CollisionShape3D>` node with ``self.shape_owner_get_owner(self.shape_find_owner(local_shape_index))``.
+``local_shape_index`` the index of the :ref:`Shape3D<class_Shape3D>` of this Area3D used by the :ref:`PhysicsServer3D<class_PhysicsServer3D>`. Get the :ref:`CollisionShape3D<class_CollisionShape3D>` node with ``self.shape_owner_get_owner(self.shape_find_owner(local_shape_index))``.
 
 ----
 
@@ -133,13 +137,13 @@ Emitted when one of another Area3D's :ref:`Shape3D<class_Shape3D>`\ s enters one
 
 Emitted when one of another Area3D's :ref:`Shape3D<class_Shape3D>`\ s exits one of this Area3D's :ref:`Shape3D<class_Shape3D>`\ s. Requires :ref:`monitoring<class_Area3D_property_monitoring>` to be set to ``true``.
 
-\ ``area_rid`` the :ref:`RID<class_RID>` of the other Area3D's :ref:`CollisionObject3D<class_CollisionObject3D>` used by the :ref:`PhysicsServer3D<class_PhysicsServer3D>`.
+``area_rid`` 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`` the other Area3D.
 
-\ ``area_shape_index`` the index of the :ref:`Shape3D<class_Shape3D>` of the other Area3D used by the :ref:`PhysicsServer3D<class_PhysicsServer3D>`. Get the :ref:`CollisionShape3D<class_CollisionShape3D>` node with ``area.shape_owner_get_owner(area.shape_find_owner(area_shape_index))``.
+``area_shape_index`` the index of the :ref:`Shape3D<class_Shape3D>` of the other Area3D used by the :ref:`PhysicsServer3D<class_PhysicsServer3D>`. Get the :ref:`CollisionShape3D<class_CollisionShape3D>` node with ``area.shape_owner_get_owner(area.shape_find_owner(area_shape_index))``.
 
-\ ``local_shape_index`` the index of the :ref:`Shape3D<class_Shape3D>` of this Area3D used by the :ref:`PhysicsServer3D<class_PhysicsServer3D>`. Get the :ref:`CollisionShape3D<class_CollisionShape3D>` node with ``self.shape_owner_get_owner(self.shape_find_owner(local_shape_index))``.
+``local_shape_index`` the index of the :ref:`Shape3D<class_Shape3D>` of this Area3D used by the :ref:`PhysicsServer3D<class_PhysicsServer3D>`. Get the :ref:`CollisionShape3D<class_CollisionShape3D>` node with ``self.shape_owner_get_owner(self.shape_find_owner(local_shape_index))``.
 
 ----
 
@@ -149,7 +153,7 @@ Emitted when one of another Area3D's :ref:`Shape3D<class_Shape3D>`\ s exits one
 
 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>`.
+``body`` the :ref:`Node<class_Node>`, if it exists in the tree, of the other :ref:`PhysicsBody3D<class_PhysicsBody3D>` or :ref:`GridMap<class_GridMap>`.
 
 ----
 
@@ -159,7 +163,7 @@ Emitted when a :ref:`PhysicsBody3D<class_PhysicsBody3D>` or :ref:`GridMap<class_
 
 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>`.
+``body`` the :ref:`Node<class_Node>`, if it exists in the tree, of the other :ref:`PhysicsBody3D<class_PhysicsBody3D>` or :ref:`GridMap<class_GridMap>`.
 
 ----
 
@@ -169,13 +173,13 @@ Emitted when a :ref:`PhysicsBody3D<class_PhysicsBody3D>` or :ref:`GridMap<class_
 
 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_rid`` 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_rid`` 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`` the :ref:`Node<class_Node>`, if it exists in the tree, of the :ref:`PhysicsBody3D<class_PhysicsBody3D>` or :ref:`GridMap<class_GridMap>`.
 
-\ ``body_shape_index`` 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>`. Get the :ref:`CollisionShape3D<class_CollisionShape3D>` node with ``body.shape_owner_get_owner(body.shape_find_owner(body_shape_index))``.
+``body_shape_index`` 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>`. Get the :ref:`CollisionShape3D<class_CollisionShape3D>` node with ``body.shape_owner_get_owner(body.shape_find_owner(body_shape_index))``.
 
-\ ``local_shape_index`` the index of the :ref:`Shape3D<class_Shape3D>` of this Area3D used by the :ref:`PhysicsServer3D<class_PhysicsServer3D>`. Get the :ref:`CollisionShape3D<class_CollisionShape3D>` node with ``self.shape_owner_get_owner(self.shape_find_owner(local_shape_index))``.
+``local_shape_index`` the index of the :ref:`Shape3D<class_Shape3D>` of this Area3D used by the :ref:`PhysicsServer3D<class_PhysicsServer3D>`. Get the :ref:`CollisionShape3D<class_CollisionShape3D>` node with ``self.shape_owner_get_owner(self.shape_find_owner(local_shape_index))``.
 
 ----
 
@@ -185,13 +189,13 @@ Emitted when one of a :ref:`PhysicsBody3D<class_PhysicsBody3D>` or :ref:`GridMap
 
 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_rid`` 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_rid`` 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`` the :ref:`Node<class_Node>`, if it exists in the tree, of the :ref:`PhysicsBody3D<class_PhysicsBody3D>` or :ref:`GridMap<class_GridMap>`.
 
-\ ``body_shape_index`` 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>`. Get the :ref:`CollisionShape3D<class_CollisionShape3D>` node with ``body.shape_owner_get_owner(body.shape_find_owner(body_shape_index))``.
+``body_shape_index`` 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>`. Get the :ref:`CollisionShape3D<class_CollisionShape3D>` node with ``body.shape_owner_get_owner(body.shape_find_owner(body_shape_index))``.
 
-\ ``local_shape_index`` the index of the :ref:`Shape3D<class_Shape3D>` of this Area3D used by the :ref:`PhysicsServer3D<class_PhysicsServer3D>`. Get the :ref:`CollisionShape3D<class_CollisionShape3D>` node with ``self.shape_owner_get_owner(self.shape_find_owner(local_shape_index))``.
+``local_shape_index`` the index of the :ref:`Shape3D<class_Shape3D>` of this Area3D used by the :ref:`PhysicsServer3D<class_PhysicsServer3D>`. Get the :ref:`CollisionShape3D<class_CollisionShape3D>` node with ``self.shape_owner_get_owner(self.shape_find_owner(local_shape_index))``.
 
 Enumerations
 ------------

+ 19 - 19
classes/class_array.rst

@@ -179,23 +179,23 @@ Methods
 Operators
 ---------
 
-+---------------------------+-----------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`   | :ref:`operator !=<class_Array_operator_neq_bool>` **(** :ref:`Array<class_Array>` right **)** |
-+---------------------------+-----------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>` | :ref:`operator +<class_Array_operator_sum_Array>` **(** :ref:`Array<class_Array>` right **)** |
-+---------------------------+-----------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`   | :ref:`operator <<class_Array_operator_lt_bool>` **(** :ref:`Array<class_Array>` right **)**   |
-+---------------------------+-----------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`   | :ref:`operator <=<class_Array_operator_lte_bool>` **(** :ref:`Array<class_Array>` right **)** |
-+---------------------------+-----------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`   | :ref:`operator ==<class_Array_operator_eq_bool>` **(** :ref:`Array<class_Array>` right **)**  |
-+---------------------------+-----------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`   | :ref:`operator ><class_Array_operator_gt_bool>` **(** :ref:`Array<class_Array>` right **)**   |
-+---------------------------+-----------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`   | :ref:`operator >=<class_Array_operator_gte_bool>` **(** :ref:`Array<class_Array>` right **)** |
-+---------------------------+-----------------------------------------------------------------------------------------------+
-| void                      | :ref:`operator []<class_Array_operator_idx_void>` **(** :ref:`int<class_int>` index **)**     |
-+---------------------------+-----------------------------------------------------------------------------------------------+
++---------------------------+------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`   | :ref:`operator !=<class_Array_operator_neq_bool>` **(** :ref:`Array<class_Array>` right **)**  |
++---------------------------+------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>` | :ref:`operator +<class_Array_operator_sum_Array>` **(** :ref:`Array<class_Array>` right **)**  |
++---------------------------+------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`   | :ref:`operator \<<class_Array_operator_lt_bool>` **(** :ref:`Array<class_Array>` right **)**   |
++---------------------------+------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`   | :ref:`operator \<=<class_Array_operator_lte_bool>` **(** :ref:`Array<class_Array>` right **)** |
++---------------------------+------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`   | :ref:`operator ==<class_Array_operator_eq_bool>` **(** :ref:`Array<class_Array>` right **)**   |
++---------------------------+------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`   | :ref:`operator ><class_Array_operator_gt_bool>` **(** :ref:`Array<class_Array>` right **)**    |
++---------------------------+------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`   | :ref:`operator >=<class_Array_operator_gte_bool>` **(** :ref:`Array<class_Array>` right **)**  |
++---------------------------+------------------------------------------------------------------------------------------------+
+| void                      | :ref:`operator []<class_Array_operator_idx_void>` **(** :ref:`int<class_int>` index **)**      |
++---------------------------+------------------------------------------------------------------------------------------------+
 
 Constructor Descriptions
 ------------------------
@@ -834,7 +834,7 @@ Concatenates two ``Array``\ s together, with the ``right`` ``Array`` being added
 
 - :ref:`bool<class_bool>` **operator <** **(** :ref:`Array<class_Array>` right **)**
 
-Performs a comparison for each index between the left operand ``Array`` and the ``right`` ``Array``, considering the highest common index of both arrays for this comparison: Returns ``true`` on the first occurrence of an element that is less, or ``false`` if the element is greater. Note that depending on the type of data stored, this function may be recursive. If all elements are equal, it compares the length of both arrays and returns ``false`` if the left operand ``Array`` has less elements, otherwise it returns ``true``.
+Performs a comparison for each index between the left operand ``Array`` and the ``right`` ``Array``, considering the highest common index of both arrays for this comparison: Returns ``true`` on the first occurrence of an element that is less, or ``false`` if the element is greater. Note that depending on the type of data stored, this function may be recursive. If all elements are equal, it compares the length of both arrays and returns ``false`` if the left operand ``Array`` has fewer elements, otherwise it returns ``true``.
 
 ----
 
@@ -842,7 +842,7 @@ Performs a comparison for each index between the left operand ``Array`` and the
 
 - :ref:`bool<class_bool>` **operator <=** **(** :ref:`Array<class_Array>` right **)**
 
-Performs a comparison for each index between the left operand ``Array`` and the ``right`` ``Array``, considering the highest common index of both arrays for this comparison: Returns ``true`` on the first occurrence of an element that is less, or ``false`` if the element is greater. Note that depending on the type of data stored, this function may be recursive. If all elements are equal, it compares the length of both arrays and returns ``true`` if the left operand ``Array`` has less or the same number of elements, otherwise it returns ``false``.
+Performs a comparison for each index between the left operand ``Array`` and the ``right`` ``Array``, considering the highest common index of both arrays for this comparison: Returns ``true`` on the first occurrence of an element that is less, or ``false`` if the element is greater. Note that depending on the type of data stored, this function may be recursive. If all elements are equal, it compares the length of both arrays and returns ``true`` if the left operand ``Array`` has the same number of elements or fewer, otherwise it returns ``false``.
 
 ----
 

+ 1 - 1
classes/class_arraymesh.rst

@@ -191,7 +191,7 @@ 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_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.
+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 an exact multiple of the vertex array's length, when multiple elements of a sub-array correspond to a single vertex) or be empty, except for :ref:`Mesh.ARRAY_INDEX<class_Mesh_constant_ARRAY_INDEX>` if it is used.
 
 ----
 

+ 3 - 3
classes/class_astar2d.rst

@@ -51,7 +51,7 @@ Methods
 +-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                               | :ref:`get_point_count<class_AStar2D_method_get_point_count>` **(** **)** |const|                                                                                                             |
 +-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                           | :ref:`get_point_ids<class_AStar2D_method_get_point_ids>` **(** **)**                                                                                                                         |
+| :ref:`PackedInt64Array<class_PackedInt64Array>`     | :ref:`get_point_ids<class_AStar2D_method_get_point_ids>` **(** **)**                                                                                                                         |
 +-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`PackedVector2Array<class_PackedVector2Array>` | :ref:`get_point_path<class_AStar2D_method_get_point_path>` **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)**                                                            |
 +-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -103,7 +103,7 @@ Note that this function is hidden in the default ``AStar2D`` class.
 
 Adds a new point at the given position with the given identifier. The ``id`` must be 0 or larger, and the ``weight_scale`` must be 0.0 or greater.
 
-The ``weight_scale`` is multiplied by the result of :ref:`_compute_cost<class_AStar2D_method__compute_cost>` when determining the overall cost of traveling across a segment from a neighboring point to this point. Thus, all else being equal, the algorithm prefers points with lower ``weight_scale``\ s to form a path.
+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::
@@ -325,7 +325,7 @@ Returns the number of points currently in the points pool.
 
 .. _class_AStar2D_method_get_point_ids:
 
-- :ref:`Array<class_Array>` **get_point_ids** **(** **)**
+- :ref:`PackedInt64Array<class_PackedInt64Array>` **get_point_ids** **(** **)**
 
 Returns an array of all point IDs.
 

+ 3 - 3
classes/class_astar3d.rst

@@ -89,7 +89,7 @@ Methods
 +-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                               | :ref:`get_point_count<class_AStar3D_method_get_point_count>` **(** **)** |const|                                                                                                             |
 +-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                           | :ref:`get_point_ids<class_AStar3D_method_get_point_ids>` **(** **)**                                                                                                                         |
+| :ref:`PackedInt64Array<class_PackedInt64Array>`     | :ref:`get_point_ids<class_AStar3D_method_get_point_ids>` **(** **)**                                                                                                                         |
 +-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`PackedVector3Array<class_PackedVector3Array>` | :ref:`get_point_path<class_AStar3D_method_get_point_path>` **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)**                                                            |
 +-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -141,7 +141,7 @@ Note that this function is hidden in the default ``AStar3D`` class.
 
 Adds a new point at the given position with the given identifier. The ``id`` must be 0 or larger, and the ``weight_scale`` must be 0.0 or greater.
 
-The ``weight_scale`` is multiplied by the result of :ref:`_compute_cost<class_AStar3D_method__compute_cost>` when determining the overall cost of traveling across a segment from a neighboring point to this point. Thus, all else being equal, the algorithm prefers points with lower ``weight_scale``\ s to form a path.
+The ``weight_scale`` is multiplied by the result of :ref:`_compute_cost<class_AStar3D_method__compute_cost>` when determining the overall cost of traveling across a segment from a neighboring point to this point. Thus, all else being equal, the algorithm prefers points with lower ``weight_scale``s to form a path.
 
 
 .. tabs::
@@ -361,7 +361,7 @@ Returns the number of points currently in the points pool.
 
 .. _class_AStar3D_method_get_point_ids:
 
-- :ref:`Array<class_Array>` **get_point_ids** **(** **)**
+- :ref:`PackedInt64Array<class_PackedInt64Array>` **get_point_ids** **(** **)**
 
 Returns an array of all point IDs.
 

+ 271 - 0
classes/class_astargrid2d.rst

@@ -0,0 +1,271 @@
+:github_url: hide
+
+.. DO NOT EDIT THIS FILE!!!
+.. Generated automatically from Godot engine sources.
+.. Generator: https://github.com/godotengine/godot/tree/master/doc/tools/make_rst.py.
+.. XML source: https://github.com/godotengine/godot/tree/master/doc/classes/AStarGrid2D.xml.
+
+.. _class_AStarGrid2D:
+
+AStarGrid2D
+===========
+
+**Inherits:** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
+
+
+
+Properties
+----------
+
++----------------------------------------------------+------------------------------------------------------------------------+--------------------+
+| :ref:`Vector2<class_Vector2>`                      | :ref:`cell_size<class_AStarGrid2D_property_cell_size>`                 | ``Vector2(1, 1)``  |
++----------------------------------------------------+------------------------------------------------------------------------+--------------------+
+| :ref:`Heuristic<enum_AStarGrid2D_Heuristic>`       | :ref:`default_heuristic<class_AStarGrid2D_property_default_heuristic>` | ``0``              |
++----------------------------------------------------+------------------------------------------------------------------------+--------------------+
+| :ref:`DiagonalMode<enum_AStarGrid2D_DiagonalMode>` | :ref:`diagonal_mode<class_AStarGrid2D_property_diagonal_mode>`         | ``0``              |
++----------------------------------------------------+------------------------------------------------------------------------+--------------------+
+| :ref:`bool<class_bool>`                            | :ref:`jumping_enabled<class_AStarGrid2D_property_jumping_enabled>`     | ``false``          |
++----------------------------------------------------+------------------------------------------------------------------------+--------------------+
+| :ref:`Vector2<class_Vector2>`                      | :ref:`offset<class_AStarGrid2D_property_offset>`                       | ``Vector2(0, 0)``  |
++----------------------------------------------------+------------------------------------------------------------------------+--------------------+
+| :ref:`Vector2i<class_Vector2i>`                    | :ref:`size<class_AStarGrid2D_property_size>`                           | ``Vector2i(0, 0)`` |
++----------------------------------------------------+------------------------------------------------------------------------+--------------------+
+
+Methods
+-------
+
++-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                           | :ref:`_compute_cost<class_AStarGrid2D_method__compute_cost>` **(** :ref:`Vector2i<class_Vector2i>` from_id, :ref:`Vector2i<class_Vector2i>` to_id **)** |virtual| |const|   |
++-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                           | :ref:`_estimate_cost<class_AStarGrid2D_method__estimate_cost>` **(** :ref:`Vector2i<class_Vector2i>` from_id, :ref:`Vector2i<class_Vector2i>` to_id **)** |virtual| |const| |
++-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`clear<class_AStarGrid2D_method_clear>` **(** **)**                                                                                                                    |
++-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedVector2Array<class_PackedVector2Array>` | :ref:`get_id_path<class_AStarGrid2D_method_get_id_path>` **(** :ref:`Vector2i<class_Vector2i>` from_id, :ref:`Vector2i<class_Vector2i>` to_id **)**                         |
++-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedVector2Array<class_PackedVector2Array>` | :ref:`get_point_path<class_AStarGrid2D_method_get_point_path>` **(** :ref:`Vector2i<class_Vector2i>` from_id, :ref:`Vector2i<class_Vector2i>` to_id **)**                   |
++-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                             | :ref:`is_dirty<class_AStarGrid2D_method_is_dirty>` **(** **)** |const|                                                                                                      |
++-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                             | :ref:`is_in_bounds<class_AStarGrid2D_method_is_in_bounds>` **(** :ref:`int<class_int>` x, :ref:`int<class_int>` y **)** |const|                                             |
++-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                             | :ref:`is_in_boundsv<class_AStarGrid2D_method_is_in_boundsv>` **(** :ref:`Vector2i<class_Vector2i>` id **)** |const|                                                         |
++-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                             | :ref:`is_point_solid<class_AStarGrid2D_method_is_point_solid>` **(** :ref:`Vector2i<class_Vector2i>` id **)** |const|                                                       |
++-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`set_point_solid<class_AStarGrid2D_method_set_point_solid>` **(** :ref:`Vector2i<class_Vector2i>` id, :ref:`bool<class_bool>` solid=true **)**                         |
++-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`update<class_AStarGrid2D_method_update>` **(** **)**                                                                                                                  |
++-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+Enumerations
+------------
+
+.. _enum_AStarGrid2D_Heuristic:
+
+.. _class_AStarGrid2D_constant_HEURISTIC_EUCLIDEAN:
+
+.. _class_AStarGrid2D_constant_HEURISTIC_MANHATTAN:
+
+.. _class_AStarGrid2D_constant_HEURISTIC_OCTILE:
+
+.. _class_AStarGrid2D_constant_HEURISTIC_CHEBYSHEV:
+
+.. _class_AStarGrid2D_constant_HEURISTIC_MAX:
+
+enum **Heuristic**:
+
+- **HEURISTIC_EUCLIDEAN** = **0**
+
+- **HEURISTIC_MANHATTAN** = **1**
+
+- **HEURISTIC_OCTILE** = **2**
+
+- **HEURISTIC_CHEBYSHEV** = **3**
+
+- **HEURISTIC_MAX** = **4**
+
+----
+
+.. _enum_AStarGrid2D_DiagonalMode:
+
+.. _class_AStarGrid2D_constant_DIAGONAL_MODE_ALWAYS:
+
+.. _class_AStarGrid2D_constant_DIAGONAL_MODE_NEVER:
+
+.. _class_AStarGrid2D_constant_DIAGONAL_MODE_AT_LEAST_ONE_WALKABLE:
+
+.. _class_AStarGrid2D_constant_DIAGONAL_MODE_ONLY_IF_NO_OBSTACLES:
+
+.. _class_AStarGrid2D_constant_DIAGONAL_MODE_MAX:
+
+enum **DiagonalMode**:
+
+- **DIAGONAL_MODE_ALWAYS** = **0**
+
+- **DIAGONAL_MODE_NEVER** = **1**
+
+- **DIAGONAL_MODE_AT_LEAST_ONE_WALKABLE** = **2**
+
+- **DIAGONAL_MODE_ONLY_IF_NO_OBSTACLES** = **3**
+
+- **DIAGONAL_MODE_MAX** = **4**
+
+Property Descriptions
+---------------------
+
+.. _class_AStarGrid2D_property_cell_size:
+
+- :ref:`Vector2<class_Vector2>` **cell_size**
+
++-----------+----------------------+
+| *Default* | ``Vector2(1, 1)``    |
++-----------+----------------------+
+| *Setter*  | set_cell_size(value) |
++-----------+----------------------+
+| *Getter*  | get_cell_size()      |
++-----------+----------------------+
+
+----
+
+.. _class_AStarGrid2D_property_default_heuristic:
+
+- :ref:`Heuristic<enum_AStarGrid2D_Heuristic>` **default_heuristic**
+
++-----------+------------------------------+
+| *Default* | ``0``                        |
++-----------+------------------------------+
+| *Setter*  | set_default_heuristic(value) |
++-----------+------------------------------+
+| *Getter*  | get_default_heuristic()      |
++-----------+------------------------------+
+
+----
+
+.. _class_AStarGrid2D_property_diagonal_mode:
+
+- :ref:`DiagonalMode<enum_AStarGrid2D_DiagonalMode>` **diagonal_mode**
+
++-----------+--------------------------+
+| *Default* | ``0``                    |
++-----------+--------------------------+
+| *Setter*  | set_diagonal_mode(value) |
++-----------+--------------------------+
+| *Getter*  | get_diagonal_mode()      |
++-----------+--------------------------+
+
+----
+
+.. _class_AStarGrid2D_property_jumping_enabled:
+
+- :ref:`bool<class_bool>` **jumping_enabled**
+
++-----------+----------------------------+
+| *Default* | ``false``                  |
++-----------+----------------------------+
+| *Setter*  | set_jumping_enabled(value) |
++-----------+----------------------------+
+| *Getter*  | is_jumping_enabled()       |
++-----------+----------------------------+
+
+----
+
+.. _class_AStarGrid2D_property_offset:
+
+- :ref:`Vector2<class_Vector2>` **offset**
+
++-----------+-------------------+
+| *Default* | ``Vector2(0, 0)`` |
++-----------+-------------------+
+| *Setter*  | set_offset(value) |
++-----------+-------------------+
+| *Getter*  | get_offset()      |
++-----------+-------------------+
+
+----
+
+.. _class_AStarGrid2D_property_size:
+
+- :ref:`Vector2i<class_Vector2i>` **size**
+
++-----------+--------------------+
+| *Default* | ``Vector2i(0, 0)`` |
++-----------+--------------------+
+| *Setter*  | set_size(value)    |
++-----------+--------------------+
+| *Getter*  | get_size()         |
++-----------+--------------------+
+
+Method Descriptions
+-------------------
+
+.. _class_AStarGrid2D_method__compute_cost:
+
+- :ref:`float<class_float>` **_compute_cost** **(** :ref:`Vector2i<class_Vector2i>` from_id, :ref:`Vector2i<class_Vector2i>` to_id **)** |virtual| |const|
+
+----
+
+.. _class_AStarGrid2D_method__estimate_cost:
+
+- :ref:`float<class_float>` **_estimate_cost** **(** :ref:`Vector2i<class_Vector2i>` from_id, :ref:`Vector2i<class_Vector2i>` to_id **)** |virtual| |const|
+
+----
+
+.. _class_AStarGrid2D_method_clear:
+
+- void **clear** **(** **)**
+
+----
+
+.. _class_AStarGrid2D_method_get_id_path:
+
+- :ref:`PackedVector2Array<class_PackedVector2Array>` **get_id_path** **(** :ref:`Vector2i<class_Vector2i>` from_id, :ref:`Vector2i<class_Vector2i>` to_id **)**
+
+----
+
+.. _class_AStarGrid2D_method_get_point_path:
+
+- :ref:`PackedVector2Array<class_PackedVector2Array>` **get_point_path** **(** :ref:`Vector2i<class_Vector2i>` from_id, :ref:`Vector2i<class_Vector2i>` to_id **)**
+
+----
+
+.. _class_AStarGrid2D_method_is_dirty:
+
+- :ref:`bool<class_bool>` **is_dirty** **(** **)** |const|
+
+----
+
+.. _class_AStarGrid2D_method_is_in_bounds:
+
+- :ref:`bool<class_bool>` **is_in_bounds** **(** :ref:`int<class_int>` x, :ref:`int<class_int>` y **)** |const|
+
+----
+
+.. _class_AStarGrid2D_method_is_in_boundsv:
+
+- :ref:`bool<class_bool>` **is_in_boundsv** **(** :ref:`Vector2i<class_Vector2i>` id **)** |const|
+
+----
+
+.. _class_AStarGrid2D_method_is_point_solid:
+
+- :ref:`bool<class_bool>` **is_point_solid** **(** :ref:`Vector2i<class_Vector2i>` id **)** |const|
+
+----
+
+.. _class_AStarGrid2D_method_set_point_solid:
+
+- void **set_point_solid** **(** :ref:`Vector2i<class_Vector2i>` id, :ref:`bool<class_bool>` solid=true **)**
+
+----
+
+.. _class_AStarGrid2D_method_update:
+
+- void **update** **(** **)**
+
+.. |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.)`

+ 1 - 1
classes/class_audioeffectchorus.rst

@@ -503,7 +503,7 @@ The voice's filter rate.
 | *Getter*  | get_voice_count()      |
 +-----------+------------------------+
 
-The amount of voices in the effect.
+The number of voices in the effect.
 
 ----
 

+ 36 - 36
classes/class_audioeffectdelay.rst

@@ -32,29 +32,29 @@ Properties
 +---------------------------+-----------------------------------------------------------------------------+-------------+
 | :ref:`float<class_float>` | :ref:`dry<class_AudioEffectDelay_property_dry>`                             | ``1.0``     |
 +---------------------------+-----------------------------------------------------------------------------+-------------+
-| :ref:`bool<class_bool>`   | :ref:`feedback/active<class_AudioEffectDelay_property_feedback/active>`     | ``false``   |
+| :ref:`bool<class_bool>`   | :ref:`feedback_active<class_AudioEffectDelay_property_feedback_active>`     | ``false``   |
 +---------------------------+-----------------------------------------------------------------------------+-------------+
-| :ref:`float<class_float>` | :ref:`feedback/delay_ms<class_AudioEffectDelay_property_feedback/delay_ms>` | ``340.0``   |
+| :ref:`float<class_float>` | :ref:`feedback_delay_ms<class_AudioEffectDelay_property_feedback_delay_ms>` | ``340.0``   |
 +---------------------------+-----------------------------------------------------------------------------+-------------+
-| :ref:`float<class_float>` | :ref:`feedback/level_db<class_AudioEffectDelay_property_feedback/level_db>` | ``-6.0``    |
+| :ref:`float<class_float>` | :ref:`feedback_level_db<class_AudioEffectDelay_property_feedback_level_db>` | ``-6.0``    |
 +---------------------------+-----------------------------------------------------------------------------+-------------+
-| :ref:`float<class_float>` | :ref:`feedback/lowpass<class_AudioEffectDelay_property_feedback/lowpass>`   | ``16000.0`` |
+| :ref:`float<class_float>` | :ref:`feedback_lowpass<class_AudioEffectDelay_property_feedback_lowpass>`   | ``16000.0`` |
 +---------------------------+-----------------------------------------------------------------------------+-------------+
-| :ref:`bool<class_bool>`   | :ref:`tap1/active<class_AudioEffectDelay_property_tap1/active>`             | ``true``    |
+| :ref:`bool<class_bool>`   | :ref:`tap1_active<class_AudioEffectDelay_property_tap1_active>`             | ``true``    |
 +---------------------------+-----------------------------------------------------------------------------+-------------+
-| :ref:`float<class_float>` | :ref:`tap1/delay_ms<class_AudioEffectDelay_property_tap1/delay_ms>`         | ``250.0``   |
+| :ref:`float<class_float>` | :ref:`tap1_delay_ms<class_AudioEffectDelay_property_tap1_delay_ms>`         | ``250.0``   |
 +---------------------------+-----------------------------------------------------------------------------+-------------+
-| :ref:`float<class_float>` | :ref:`tap1/level_db<class_AudioEffectDelay_property_tap1/level_db>`         | ``-6.0``    |
+| :ref:`float<class_float>` | :ref:`tap1_level_db<class_AudioEffectDelay_property_tap1_level_db>`         | ``-6.0``    |
 +---------------------------+-----------------------------------------------------------------------------+-------------+
-| :ref:`float<class_float>` | :ref:`tap1/pan<class_AudioEffectDelay_property_tap1/pan>`                   | ``0.2``     |
+| :ref:`float<class_float>` | :ref:`tap1_pan<class_AudioEffectDelay_property_tap1_pan>`                   | ``0.2``     |
 +---------------------------+-----------------------------------------------------------------------------+-------------+
-| :ref:`bool<class_bool>`   | :ref:`tap2/active<class_AudioEffectDelay_property_tap2/active>`             | ``true``    |
+| :ref:`bool<class_bool>`   | :ref:`tap2_active<class_AudioEffectDelay_property_tap2_active>`             | ``true``    |
 +---------------------------+-----------------------------------------------------------------------------+-------------+
-| :ref:`float<class_float>` | :ref:`tap2/delay_ms<class_AudioEffectDelay_property_tap2/delay_ms>`         | ``500.0``   |
+| :ref:`float<class_float>` | :ref:`tap2_delay_ms<class_AudioEffectDelay_property_tap2_delay_ms>`         | ``500.0``   |
 +---------------------------+-----------------------------------------------------------------------------+-------------+
-| :ref:`float<class_float>` | :ref:`tap2/level_db<class_AudioEffectDelay_property_tap2/level_db>`         | ``-12.0``   |
+| :ref:`float<class_float>` | :ref:`tap2_level_db<class_AudioEffectDelay_property_tap2_level_db>`         | ``-12.0``   |
 +---------------------------+-----------------------------------------------------------------------------+-------------+
-| :ref:`float<class_float>` | :ref:`tap2/pan<class_AudioEffectDelay_property_tap2/pan>`                   | ``-0.4``    |
+| :ref:`float<class_float>` | :ref:`tap2_pan<class_AudioEffectDelay_property_tap2_pan>`                   | ``-0.4``    |
 +---------------------------+-----------------------------------------------------------------------------+-------------+
 
 Property Descriptions
@@ -76,9 +76,9 @@ Output percent of original sound. At 0, only delayed sounds are output. Value ca
 
 ----
 
-.. _class_AudioEffectDelay_property_feedback/active:
+.. _class_AudioEffectDelay_property_feedback_active:
 
-- :ref:`bool<class_bool>` **feedback/active**
+- :ref:`bool<class_bool>` **feedback_active**
 
 +-----------+----------------------------+
 | *Default* | ``false``                  |
@@ -92,9 +92,9 @@ If ``true``, feedback is enabled.
 
 ----
 
-.. _class_AudioEffectDelay_property_feedback/delay_ms:
+.. _class_AudioEffectDelay_property_feedback_delay_ms:
 
-- :ref:`float<class_float>` **feedback/delay_ms**
+- :ref:`float<class_float>` **feedback_delay_ms**
 
 +-----------+------------------------------+
 | *Default* | ``340.0``                    |
@@ -108,9 +108,9 @@ Feedback delay time in milliseconds.
 
 ----
 
-.. _class_AudioEffectDelay_property_feedback/level_db:
+.. _class_AudioEffectDelay_property_feedback_level_db:
 
-- :ref:`float<class_float>` **feedback/level_db**
+- :ref:`float<class_float>` **feedback_level_db**
 
 +-----------+------------------------------+
 | *Default* | ``-6.0``                     |
@@ -124,9 +124,9 @@ Sound level for ``tap1``.
 
 ----
 
-.. _class_AudioEffectDelay_property_feedback/lowpass:
+.. _class_AudioEffectDelay_property_feedback_lowpass:
 
-- :ref:`float<class_float>` **feedback/lowpass**
+- :ref:`float<class_float>` **feedback_lowpass**
 
 +-----------+-----------------------------+
 | *Default* | ``16000.0``                 |
@@ -140,9 +140,9 @@ Low-pass filter for feedback, in Hz. Frequencies below this value are filtered o
 
 ----
 
-.. _class_AudioEffectDelay_property_tap1/active:
+.. _class_AudioEffectDelay_property_tap1_active:
 
-- :ref:`bool<class_bool>` **tap1/active**
+- :ref:`bool<class_bool>` **tap1_active**
 
 +-----------+------------------------+
 | *Default* | ``true``               |
@@ -156,9 +156,9 @@ If ``true``, ``tap1`` will be enabled.
 
 ----
 
-.. _class_AudioEffectDelay_property_tap1/delay_ms:
+.. _class_AudioEffectDelay_property_tap1_delay_ms:
 
-- :ref:`float<class_float>` **tap1/delay_ms**
+- :ref:`float<class_float>` **tap1_delay_ms**
 
 +-----------+--------------------------+
 | *Default* | ``250.0``                |
@@ -172,9 +172,9 @@ If ``true``, ``tap1`` will be enabled.
 
 ----
 
-.. _class_AudioEffectDelay_property_tap1/level_db:
+.. _class_AudioEffectDelay_property_tap1_level_db:
 
-- :ref:`float<class_float>` **tap1/level_db**
+- :ref:`float<class_float>` **tap1_level_db**
 
 +-----------+--------------------------+
 | *Default* | ``-6.0``                 |
@@ -188,9 +188,9 @@ Sound level for ``tap1``.
 
 ----
 
-.. _class_AudioEffectDelay_property_tap1/pan:
+.. _class_AudioEffectDelay_property_tap1_pan:
 
-- :ref:`float<class_float>` **tap1/pan**
+- :ref:`float<class_float>` **tap1_pan**
 
 +-----------+---------------------+
 | *Default* | ``0.2``             |
@@ -204,9 +204,9 @@ Pan position for ``tap1``. Value can range from -1 (fully left) to 1 (fully righ
 
 ----
 
-.. _class_AudioEffectDelay_property_tap2/active:
+.. _class_AudioEffectDelay_property_tap2_active:
 
-- :ref:`bool<class_bool>` **tap2/active**
+- :ref:`bool<class_bool>` **tap2_active**
 
 +-----------+------------------------+
 | *Default* | ``true``               |
@@ -220,9 +220,9 @@ If ``true``, ``tap2`` will be enabled.
 
 ----
 
-.. _class_AudioEffectDelay_property_tap2/delay_ms:
+.. _class_AudioEffectDelay_property_tap2_delay_ms:
 
-- :ref:`float<class_float>` **tap2/delay_ms**
+- :ref:`float<class_float>` **tap2_delay_ms**
 
 +-----------+--------------------------+
 | *Default* | ``500.0``                |
@@ -236,9 +236,9 @@ If ``true``, ``tap2`` will be enabled.
 
 ----
 
-.. _class_AudioEffectDelay_property_tap2/level_db:
+.. _class_AudioEffectDelay_property_tap2_level_db:
 
-- :ref:`float<class_float>` **tap2/level_db**
+- :ref:`float<class_float>` **tap2_level_db**
 
 +-----------+--------------------------+
 | *Default* | ``-12.0``                |
@@ -252,9 +252,9 @@ Sound level for ``tap2``.
 
 ----
 
-.. _class_AudioEffectDelay_property_tap2/pan:
+.. _class_AudioEffectDelay_property_tap2_pan:
 
-- :ref:`float<class_float>` **tap2/pan**
+- :ref:`float<class_float>` **tap2_pan**
 
 +-----------+---------------------+
 | *Default* | ``-0.4``            |

+ 13 - 13
classes/class_audioeffectrecord.rst

@@ -33,27 +33,27 @@ Tutorials
 Properties
 ----------
 
-+----------------------------------------------+--------------------------------------------------------+-------+
-| :ref:`Format<enum_AudioStreamSample_Format>` | :ref:`format<class_AudioEffectRecord_property_format>` | ``1`` |
-+----------------------------------------------+--------------------------------------------------------+-------+
++-------------------------------------------+--------------------------------------------------------+-------+
+| :ref:`Format<enum_AudioStreamWAV_Format>` | :ref:`format<class_AudioEffectRecord_property_format>` | ``1`` |
++-------------------------------------------+--------------------------------------------------------+-------+
 
 Methods
 -------
 
-+---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
-| :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|                          |
-+---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
-| void                                              | :ref:`set_recording_active<class_AudioEffectRecord_method_set_recording_active>` **(** :ref:`bool<class_bool>` record **)** |
-+---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
+| :ref:`AudioStreamWAV<class_AudioStreamWAV>` | :ref:`get_recording<class_AudioEffectRecord_method_get_recording>` **(** **)** |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 **)** |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
 
 Property Descriptions
 ---------------------
 
 .. _class_AudioEffectRecord_property_format:
 
-- :ref:`Format<enum_AudioStreamSample_Format>` **format**
+- :ref:`Format<enum_AudioStreamWAV_Format>` **format**
 
 +-----------+-------------------+
 | *Default* | ``1``             |
@@ -63,14 +63,14 @@ Property Descriptions
 | *Getter*  | get_format()      |
 +-----------+-------------------+
 
-Specifies the format in which the sample will be recorded. See :ref:`Format<enum_AudioStreamSample_Format>` for available formats.
+Specifies the format in which the sample will be recorded. See :ref:`Format<enum_AudioStreamWAV_Format>` for available formats.
 
 Method Descriptions
 -------------------
 
 .. _class_AudioEffectRecord_method_get_recording:
 
-- :ref:`AudioStreamSample<class_AudioStreamSample>` **get_recording** **(** **)** |const|
+- :ref:`AudioStreamWAV<class_AudioStreamWAV>` **get_recording** **(** **)** |const|
 
 Returns the recorded sample.
 

+ 5 - 5
classes/class_audioserver.rst

@@ -51,7 +51,7 @@ Methods
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                                  | :ref:`add_bus_effect<class_AudioServer_method_add_bus_effect>` **(** :ref:`int<class_int>` bus_idx, :ref:`AudioEffect<class_AudioEffect>` effect, :ref:`int<class_int>` at_position=-1 **)**  |
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                             | :ref:`capture_get_device_list<class_AudioServer_method_capture_get_device_list>` **(** **)**                                                                                                  |
+| :ref:`PackedStringArray<class_PackedStringArray>`     | :ref:`capture_get_device_list<class_AudioServer_method_capture_get_device_list>` **(** **)**                                                                                                  |
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`AudioBusLayout<class_AudioBusLayout>`           | :ref:`generate_bus_layout<class_AudioServer_method_generate_bus_layout>` **(** **)** |const|                                                                                                  |
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -75,7 +75,7 @@ Methods
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :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:`PackedStringArray<class_PackedStringArray>`     | :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|                                                                                                                |
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -244,7 +244,7 @@ Adds an :ref:`AudioEffect<class_AudioEffect>` effect to the bus ``bus_idx`` at `
 
 .. _class_AudioServer_method_capture_get_device_list:
 
-- :ref:`Array<class_Array>` **capture_get_device_list** **(** **)**
+- :ref:`PackedStringArray<class_PackedStringArray>` **capture_get_device_list** **(** **)**
 
 Returns the names of all audio input devices detected on the system.
 
@@ -262,7 +262,7 @@ Generates an :ref:`AudioBusLayout<class_AudioBusLayout>` using the available bus
 
 - :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 number of channels of the bus at index ``bus_idx``.
 
 ----
 
@@ -340,7 +340,7 @@ Returns the volume of the bus at index ``bus_idx`` in dB.
 
 .. _class_AudioServer_method_get_device_list:
 
-- :ref:`Array<class_Array>` **get_device_list** **(** **)**
+- :ref:`PackedStringArray<class_PackedStringArray>` **get_device_list** **(** **)**
 
 Returns the names of all audio devices detected on the system.
 

+ 2 - 2
classes/class_audiostream.rst

@@ -12,14 +12,14 @@ AudioStream
 
 **Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
-**Inherited By:** :ref:`AudioStreamGenerator<class_AudioStreamGenerator>`, :ref:`AudioStreamMP3<class_AudioStreamMP3>`, :ref:`AudioStreamMicrophone<class_AudioStreamMicrophone>`, :ref:`AudioStreamOGGVorbis<class_AudioStreamOGGVorbis>`, :ref:`AudioStreamRandomizer<class_AudioStreamRandomizer>`, :ref:`AudioStreamSample<class_AudioStreamSample>`
+**Inherited By:** :ref:`AudioStreamGenerator<class_AudioStreamGenerator>`, :ref:`AudioStreamMP3<class_AudioStreamMP3>`, :ref:`AudioStreamMicrophone<class_AudioStreamMicrophone>`, :ref:`AudioStreamOggVorbis<class_AudioStreamOggVorbis>`, :ref:`AudioStreamRandomizer<class_AudioStreamRandomizer>`, :ref:`AudioStreamWAV<class_AudioStreamWAV>`
 
 Base class for audio streams.
 
 Description
 -----------
 
-Base class for audio streams. Audio streams are used for sound effects and music playback, and support WAV (via :ref:`AudioStreamSample<class_AudioStreamSample>`) and OGG (via :ref:`AudioStreamOGGVorbis<class_AudioStreamOGGVorbis>`) file formats.
+Base class for audio streams. Audio streams are used for sound effects and music playback, and support WAV (via :ref:`AudioStreamWAV<class_AudioStreamWAV>`) and Ogg (via :ref:`AudioStreamOggVorbis<class_AudioStreamOggVorbis>`) file formats.
 
 Tutorials
 ---------

+ 17 - 17
classes/class_audiostreamoggvorbis.rst

@@ -3,11 +3,11 @@
 .. DO NOT EDIT THIS FILE!!!
 .. Generated automatically from Godot engine sources.
 .. Generator: https://github.com/godotengine/godot/tree/master/doc/tools/make_rst.py.
-.. XML source: https://github.com/godotengine/godot/tree/master/modules/vorbis/doc_classes/AudioStreamOGGVorbis.xml.
+.. XML source: https://github.com/godotengine/godot/tree/master/modules/vorbis/doc_classes/AudioStreamOggVorbis.xml.
 
-.. _class_AudioStreamOGGVorbis:
+.. _class_AudioStreamOggVorbis:
 
-AudioStreamOGGVorbis
+AudioStreamOggVorbis
 ====================
 
 **Inherits:** :ref:`AudioStream<class_AudioStream>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
@@ -18,23 +18,23 @@ Properties
 ----------
 
 +---------------------------------------------------+-----------------------------------------------------------------------------+-----------+
-| :ref:`int<class_int>`                             | :ref:`bar_beats<class_AudioStreamOGGVorbis_property_bar_beats>`             | ``4``     |
+| :ref:`int<class_int>`                             | :ref:`bar_beats<class_AudioStreamOggVorbis_property_bar_beats>`             | ``4``     |
 +---------------------------------------------------+-----------------------------------------------------------------------------+-----------+
-| :ref:`int<class_int>`                             | :ref:`beat_count<class_AudioStreamOGGVorbis_property_beat_count>`           | ``0``     |
+| :ref:`int<class_int>`                             | :ref:`beat_count<class_AudioStreamOggVorbis_property_beat_count>`           | ``0``     |
 +---------------------------------------------------+-----------------------------------------------------------------------------+-----------+
-| :ref:`float<class_float>`                         | :ref:`bpm<class_AudioStreamOGGVorbis_property_bpm>`                         | ``0.0``   |
+| :ref:`float<class_float>`                         | :ref:`bpm<class_AudioStreamOggVorbis_property_bpm>`                         | ``0.0``   |
 +---------------------------------------------------+-----------------------------------------------------------------------------+-----------+
-| :ref:`bool<class_bool>`                           | :ref:`loop<class_AudioStreamOGGVorbis_property_loop>`                       | ``false`` |
+| :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:`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>` |           |
+| :ref:`OggPacketSequence<class_OggPacketSequence>` | :ref:`packet_sequence<class_AudioStreamOggVorbis_property_packet_sequence>` |           |
 +---------------------------------------------------+-----------------------------------------------------------------------------+-----------+
 
 Property Descriptions
 ---------------------
 
-.. _class_AudioStreamOGGVorbis_property_bar_beats:
+.. _class_AudioStreamOggVorbis_property_bar_beats:
 
 - :ref:`int<class_int>` **bar_beats**
 
@@ -48,7 +48,7 @@ Property Descriptions
 
 ----
 
-.. _class_AudioStreamOGGVorbis_property_beat_count:
+.. _class_AudioStreamOggVorbis_property_beat_count:
 
 - :ref:`int<class_int>` **beat_count**
 
@@ -62,7 +62,7 @@ Property Descriptions
 
 ----
 
-.. _class_AudioStreamOGGVorbis_property_bpm:
+.. _class_AudioStreamOggVorbis_property_bpm:
 
 - :ref:`float<class_float>` **bpm**
 
@@ -76,7 +76,7 @@ Property Descriptions
 
 ----
 
-.. _class_AudioStreamOGGVorbis_property_loop:
+.. _class_AudioStreamOggVorbis_property_loop:
 
 - :ref:`bool<class_bool>` **loop**
 
@@ -92,7 +92,7 @@ If ``true``, the stream will automatically loop when it reaches the end.
 
 ----
 
-.. _class_AudioStreamOGGVorbis_property_loop_offset:
+.. _class_AudioStreamOggVorbis_property_loop_offset:
 
 - :ref:`float<class_float>` **loop_offset**
 
@@ -108,9 +108,9 @@ Time in seconds at which the stream starts after being looped.
 
 ----
 
-.. _class_AudioStreamOGGVorbis_property_packet_sequence:
+.. _class_AudioStreamOggVorbis_property_packet_sequence:
 
-- :ref:`OGGPacketSequence<class_OGGPacketSequence>` **packet_sequence**
+- :ref:`OggPacketSequence<class_OggPacketSequence>` **packet_sequence**
 
 +----------+----------------------------+
 | *Setter* | set_packet_sequence(value) |
@@ -118,7 +118,7 @@ Time in seconds at which the stream starts after being looped.
 | *Getter* | get_packet_sequence()      |
 +----------+----------------------------+
 
-Contains the raw OGG data for this stream.
+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.)`

+ 1 - 1
classes/class_audiostreamplayback.rst

@@ -19,7 +19,7 @@ Meta class for playing back audio.
 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
 ---------

+ 3 - 3
classes/class_audiostreamplaybackoggvorbis.rst

@@ -3,11 +3,11 @@
 .. DO NOT EDIT THIS FILE!!!
 .. Generated automatically from Godot engine sources.
 .. Generator: https://github.com/godotengine/godot/tree/master/doc/tools/make_rst.py.
-.. XML source: https://github.com/godotengine/godot/tree/master/modules/vorbis/doc_classes/AudioStreamPlaybackOGGVorbis.xml.
+.. XML source: https://github.com/godotengine/godot/tree/master/modules/vorbis/doc_classes/AudioStreamPlaybackOggVorbis.xml.
 
-.. _class_AudioStreamPlaybackOGGVorbis:
+.. _class_AudioStreamPlaybackOggVorbis:
 
-AudioStreamPlaybackOGGVorbis
+AudioStreamPlaybackOggVorbis
 ============================
 
 **Inherits:** :ref:`AudioStreamPlaybackResampled<class_AudioStreamPlaybackResampled>` **<** :ref:`AudioStreamPlayback<class_AudioStreamPlayback>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`

+ 1 - 1
classes/class_audiostreamplaybackresampled.rst

@@ -12,7 +12,7 @@ AudioStreamPlaybackResampled
 
 **Inherits:** :ref:`AudioStreamPlayback<class_AudioStreamPlayback>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
-**Inherited By:** :ref:`AudioStreamGeneratorPlayback<class_AudioStreamGeneratorPlayback>`, :ref:`AudioStreamPlaybackOGGVorbis<class_AudioStreamPlaybackOGGVorbis>`
+**Inherited By:** :ref:`AudioStreamGeneratorPlayback<class_AudioStreamGeneratorPlayback>`, :ref:`AudioStreamPlaybackOggVorbis<class_AudioStreamPlaybackOggVorbis>`
 
 
 

+ 3 - 1
classes/class_audiostreamplayer2d.rst

@@ -17,7 +17,9 @@ Plays positional sound in 2D space.
 Description
 -----------
 
-Plays audio that dampens with distance from screen center.
+Plays audio that dampens with distance from a given position.
+
+By default, audio is heard from the screen center. This can be changed by adding an :ref:`AudioListener2D<class_AudioListener2D>` node to the scene and enabling it by calling :ref:`AudioListener2D.make_current<class_AudioListener2D_method_make_current>` on it.
 
 See also :ref:`AudioStreamPlayer<class_AudioStreamPlayer>` to play a sound non-positionally.
 

+ 1 - 1
classes/class_audiostreamplayer3d.rst

@@ -19,7 +19,7 @@ Description
 
 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.
+By default, audio is heard from the camera position. This can be changed by adding an :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.
 

+ 48 - 48
classes/class_audiostreamsample.rst → classes/class_audiostreamwav.rst

@@ -3,12 +3,12 @@
 .. DO NOT EDIT THIS FILE!!!
 .. Generated automatically from Godot engine sources.
 .. Generator: https://github.com/godotengine/godot/tree/master/doc/tools/make_rst.py.
-.. XML source: https://github.com/godotengine/godot/tree/master/doc/classes/AudioStreamSample.xml.
+.. XML source: https://github.com/godotengine/godot/tree/master/doc/classes/AudioStreamWAV.xml.
 
-.. _class_AudioStreamSample:
+.. _class_AudioStreamWAV:
 
-AudioStreamSample
-=================
+AudioStreamWAV
+==============
 
 **Inherits:** :ref:`AudioStream<class_AudioStream>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
@@ -17,46 +17,46 @@ Stores audio data loaded from WAV files.
 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.
+AudioStreamWAV 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. See also :ref:`AudioStreamGenerator<class_AudioStreamGenerator>` for procedural audio generation.
 
 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_AudioStreamWAV_property_data>`             | ``PackedByteArray()`` |
++-----------------------------------------------+-------------------------------------------------------------+-----------------------+
+| :ref:`Format<enum_AudioStreamWAV_Format>`     | :ref:`format<class_AudioStreamWAV_property_format>`         | ``0``                 |
++-----------------------------------------------+-------------------------------------------------------------+-----------------------+
+| :ref:`int<class_int>`                         | :ref:`loop_begin<class_AudioStreamWAV_property_loop_begin>` | ``0``                 |
++-----------------------------------------------+-------------------------------------------------------------+-----------------------+
+| :ref:`int<class_int>`                         | :ref:`loop_end<class_AudioStreamWAV_property_loop_end>`     | ``0``                 |
++-----------------------------------------------+-------------------------------------------------------------+-----------------------+
+| :ref:`LoopMode<enum_AudioStreamWAV_LoopMode>` | :ref:`loop_mode<class_AudioStreamWAV_property_loop_mode>`   | ``0``                 |
++-----------------------------------------------+-------------------------------------------------------------+-----------------------+
+| :ref:`int<class_int>`                         | :ref:`mix_rate<class_AudioStreamWAV_property_mix_rate>`     | ``44100``             |
++-----------------------------------------------+-------------------------------------------------------------+-----------------------+
+| :ref:`bool<class_bool>`                       | :ref:`stereo<class_AudioStreamWAV_property_stereo>`         | ``false``             |
++-----------------------------------------------+-------------------------------------------------------------+-----------------------+
 
 Methods
 -------
 
-+---------------------------------------+-------------------------------------------------------------------------------------------------------------+
-| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`save_to_wav<class_AudioStreamSample_method_save_to_wav>` **(** :ref:`String<class_String>` path **)** |
-+---------------------------------------+-------------------------------------------------------------------------------------------------------------+
++---------------------------------------+----------------------------------------------------------------------------------------------------------+
+| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`save_to_wav<class_AudioStreamWAV_method_save_to_wav>` **(** :ref:`String<class_String>` path **)** |
++---------------------------------------+----------------------------------------------------------------------------------------------------------+
 
 Enumerations
 ------------
 
-.. _enum_AudioStreamSample_Format:
+.. _enum_AudioStreamWAV_Format:
 
-.. _class_AudioStreamSample_constant_FORMAT_8_BITS:
+.. _class_AudioStreamWAV_constant_FORMAT_8_BITS:
 
-.. _class_AudioStreamSample_constant_FORMAT_16_BITS:
+.. _class_AudioStreamWAV_constant_FORMAT_16_BITS:
 
-.. _class_AudioStreamSample_constant_FORMAT_IMA_ADPCM:
+.. _class_AudioStreamWAV_constant_FORMAT_IMA_ADPCM:
 
 enum **Format**:
 
@@ -68,30 +68,30 @@ enum **Format**:
 
 ----
 
-.. _enum_AudioStreamSample_LoopMode:
+.. _enum_AudioStreamWAV_LoopMode:
 
-.. _class_AudioStreamSample_constant_LOOP_DISABLED:
+.. _class_AudioStreamWAV_constant_LOOP_DISABLED:
 
-.. _class_AudioStreamSample_constant_LOOP_FORWARD:
+.. _class_AudioStreamWAV_constant_LOOP_FORWARD:
 
-.. _class_AudioStreamSample_constant_LOOP_PINGPONG:
+.. _class_AudioStreamWAV_constant_LOOP_PINGPONG:
 
-.. _class_AudioStreamSample_constant_LOOP_BACKWARD:
+.. _class_AudioStreamWAV_constant_LOOP_BACKWARD:
 
 enum **LoopMode**:
 
 - **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_AudioStreamWAV_property_loop_begin>` and :ref:`loop_end<class_AudioStreamWAV_property_loop_end>`, playing forward only.
 
-- **LOOP_PINGPONG** = **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_PINGPONG** = **2** --- Audio loops the data between :ref:`loop_begin<class_AudioStreamWAV_property_loop_begin>` and :ref:`loop_end<class_AudioStreamWAV_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_AudioStreamWAV_property_loop_begin>` and :ref:`loop_end<class_AudioStreamWAV_property_loop_end>`, playing backward only.
 
 Property Descriptions
 ---------------------
 
-.. _class_AudioStreamSample_property_data:
+.. _class_AudioStreamWAV_property_data:
 
 - :ref:`PackedByteArray<class_PackedByteArray>` **data**
 
@@ -109,9 +109,9 @@ Contains the audio data in bytes.
 
 ----
 
-.. _class_AudioStreamSample_property_format:
+.. _class_AudioStreamWAV_property_format:
 
-- :ref:`Format<enum_AudioStreamSample_Format>` **format**
+- :ref:`Format<enum_AudioStreamWAV_Format>` **format**
 
 +-----------+-------------------+
 | *Default* | ``0``             |
@@ -121,11 +121,11 @@ Contains the audio data in bytes.
 | *Getter*  | get_format()      |
 +-----------+-------------------+
 
-Audio format. See :ref:`Format<enum_AudioStreamSample_Format>` constants for values.
+Audio format. See :ref:`Format<enum_AudioStreamWAV_Format>` constants for values.
 
 ----
 
-.. _class_AudioStreamSample_property_loop_begin:
+.. _class_AudioStreamWAV_property_loop_begin:
 
 - :ref:`int<class_int>` **loop_begin**
 
@@ -141,7 +141,7 @@ The loop start point (in number of samples, relative to the beginning of the sam
 
 ----
 
-.. _class_AudioStreamSample_property_loop_end:
+.. _class_AudioStreamWAV_property_loop_end:
 
 - :ref:`int<class_int>` **loop_end**
 
@@ -157,9 +157,9 @@ The loop end point (in number of samples, relative to the beginning of the sampl
 
 ----
 
-.. _class_AudioStreamSample_property_loop_mode:
+.. _class_AudioStreamWAV_property_loop_mode:
 
-- :ref:`LoopMode<enum_AudioStreamSample_LoopMode>` **loop_mode**
+- :ref:`LoopMode<enum_AudioStreamWAV_LoopMode>` **loop_mode**
 
 +-----------+----------------------+
 | *Default* | ``0``                |
@@ -169,11 +169,11 @@ The loop end point (in number of samples, relative to the beginning of the sampl
 | *Getter*  | get_loop_mode()      |
 +-----------+----------------------+
 
-The loop mode. This information will be imported automatically from the WAV file if present. 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_AudioStreamWAV_LoopMode>` constants for values.
 
 ----
 
-.. _class_AudioStreamSample_property_mix_rate:
+.. _class_AudioStreamWAV_property_mix_rate:
 
 - :ref:`int<class_int>` **mix_rate**
 
@@ -193,7 +193,7 @@ According to the `Nyquist-Shannon sampling theorem <https://en.wikipedia.org/wik
 
 ----
 
-.. _class_AudioStreamSample_property_stereo:
+.. _class_AudioStreamWAV_property_stereo:
 
 - :ref:`bool<class_bool>` **stereo**
 
@@ -210,11 +210,11 @@ If ``true``, audio is stereo.
 Method Descriptions
 -------------------
 
-.. _class_AudioStreamSample_method_save_to_wav:
+.. _class_AudioStreamWAV_method_save_to_wav:
 
 - :ref:`Error<enum_@GlobalScope_Error>` **save_to_wav** **(** :ref:`String<class_String>` path **)**
 
-Saves the AudioStreamSample as a WAV file to ``path``. Samples with IMA ADPCM format can't be saved.
+Saves the AudioStreamWAV as a WAV file to ``path``. Samples with IMA ADPCM format can't be saved.
 
 \ **Note:** A ``.wav`` extension is automatically appended to ``path`` if it is missing.
 

+ 40 - 8
classes/class_basematerial3d.rst

@@ -142,7 +142,7 @@ Properties
 +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+-----------------------+
 | :ref:`int<class_int>`                                           | :ref:`heightmap_min_layers<class_BaseMaterial3D_property_heightmap_min_layers>`                                   |                       |
 +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+-----------------------+
-| :ref:`float<class_float>`                                       | :ref:`heightmap_scale<class_BaseMaterial3D_property_heightmap_scale>`                                             | ``0.05``              |
+| :ref:`float<class_float>`                                       | :ref:`heightmap_scale<class_BaseMaterial3D_property_heightmap_scale>`                                             | ``5.0``               |
 +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+-----------------------+
 | :ref:`Texture2D<class_Texture2D>`                               | :ref:`heightmap_texture<class_BaseMaterial3D_property_heightmap_texture>`                                         |                       |
 +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+-----------------------+
@@ -389,9 +389,9 @@ enum **TextureFilter**:
 
 - **TEXTURE_FILTER_LINEAR_WITH_MIPMAPS** = **3** --- The texture filter blends between the nearest 4 pixels and between the nearest 2 mipmaps. Use this for most cases as mipmaps are important to smooth out pixels that are far from the camera.
 
-- **TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC** = **4** --- The texture filter reads from the nearest pixel, but selects a mipmap based on the angle between the surface and the camera view. This reduces artifacts on surfaces that are almost in line with the camera.
+- **TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC** = **4** --- The texture filter reads from the nearest pixel, but selects a mipmap based on the angle between the surface and the camera view. This reduces artifacts on surfaces that are almost in line with the camera. The anisotropic filtering level can be changed by adjusting :ref:`ProjectSettings.rendering/textures/default_filters/anisotropic_filtering_level<class_ProjectSettings_property_rendering/textures/default_filters/anisotropic_filtering_level>`.
 
-- **TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC** = **5** --- The texture filter blends between the nearest 4 pixels and selects a mipmap based on the angle between the surface and the camera view. This reduces artifacts on surfaces that are almost in line with the camera. This is the slowest of the filtering options, but results in the highest quality texturing.
+- **TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC** = **5** --- The texture filter blends between the nearest 4 pixels and selects a mipmap based on the angle between the surface and the camera view. This reduces artifacts on surfaces that are almost in line with the camera. This is the slowest of the filtering options, but results in the highest quality texturing. The anisotropic filtering level can be changed by adjusting :ref:`ProjectSettings.rendering/textures/default_filters/anisotropic_filtering_level<class_ProjectSettings_property_rendering/textures/default_filters/anisotropic_filtering_level>`.
 
 - **TEXTURE_FILTER_MAX** = **6** --- Represents the size of the :ref:`TextureFilter<enum_BaseMaterial3D_TextureFilter>` enum.
 
@@ -753,7 +753,7 @@ enum **BillboardMode**:
 
 - **BILLBOARD_PARTICLES** = **3** --- Used for particle systems when assigned to :ref:`GPUParticles3D<class_GPUParticles3D>` and :ref:`CPUParticles3D<class_CPUParticles3D>` nodes. Enables ``particles_anim_*`` properties.
 
-The :ref:`ParticlesMaterial.anim_speed_min<class_ParticlesMaterial_property_anim_speed_min>` or :ref:`CPUParticles3D.anim_speed_min<class_CPUParticles3D_property_anim_speed_min>` should also be set to a value bigger than zero for the animation to play.
+The :ref:`ParticleProcessMaterial.anim_speed_min<class_ParticleProcessMaterial_property_anim_speed_min>` or :ref:`CPUParticles3D.anim_speed_min<class_CPUParticles3D_property_anim_speed_min>` should also be set to a value bigger than zero for the animation to play.
 
 ----
 
@@ -940,7 +940,7 @@ The hashing scale for Alpha Hash. Recommended values between ``0`` and ``2``.
 | *Getter* | get_alpha_scissor_threshold()      |
 +----------+------------------------------------+
 
-Threshold at which the alpha scissor will discard values.
+Threshold at which the alpha scissor will discard values. Higher values will result in more pixels being discarded. If the material becomes too opaque at a distance, try increasing :ref:`alpha_scissor_threshold<class_BaseMaterial3D_property_alpha_scissor_threshold>`. If the material disappears at a distance, try decreasing :ref:`alpha_scissor_threshold<class_BaseMaterial3D_property_alpha_scissor_threshold>`.
 
 ----
 
@@ -1616,6 +1616,8 @@ Grows object vertices in the direction of their normals.
 | *Getter*  | is_heightmap_deep_parallax_enabled() |
 +-----------+--------------------------------------+
 
+If ``true``, uses parallax occlusion mapping to represent depth in the material instead of simple offset mapping (see :ref:`heightmap_enabled<class_BaseMaterial3D_property_heightmap_enabled>`). This results in a more convincing depth effect, but is much more expensive on the GPU. Only enable this on materials where it makes a significant visual difference.
+
 ----
 
 .. _class_BaseMaterial3D_property_heightmap_enabled:
@@ -1630,7 +1632,7 @@ Grows object vertices in the direction of their normals.
 | *Getter*  | get_feature()      |
 +-----------+--------------------+
 
-If ``true``, height mapping is enabled (also called "parallax mapping" or "depth mapping"). See also :ref:`normal_enabled<class_BaseMaterial3D_property_normal_enabled>`.
+If ``true``, height mapping is enabled (also called "parallax mapping" or "depth mapping"). See also :ref:`normal_enabled<class_BaseMaterial3D_property_normal_enabled>`. Height mapping is a demanding feature on the GPU, so it should only be used on materials where it makes a significant visual difference.
 
 \ **Note:** Height mapping is not supported if triplanar mapping is used on the same material. The value of :ref:`heightmap_enabled<class_BaseMaterial3D_property_heightmap_enabled>` will be ignored if :ref:`uv1_triplanar<class_BaseMaterial3D_property_uv1_triplanar>` is enabled.
 
@@ -1648,6 +1650,8 @@ If ``true``, height mapping is enabled (also called "parallax mapping" or "depth
 | *Getter*  | get_heightmap_deep_parallax_flip_binormal()      |
 +-----------+--------------------------------------------------+
 
+If ``true``, flips the mesh's binormal vectors when interpreting the height map. If the heightmap effect looks strange when the camera moves (even with a reasonable :ref:`heightmap_scale<class_BaseMaterial3D_property_heightmap_scale>`), try setting this to ``true``.
+
 ----
 
 .. _class_BaseMaterial3D_property_heightmap_flip_tangent:
@@ -1662,6 +1666,8 @@ If ``true``, height mapping is enabled (also called "parallax mapping" or "depth
 | *Getter*  | get_heightmap_deep_parallax_flip_tangent()      |
 +-----------+-------------------------------------------------+
 
+If ``true``, flips the mesh's tangent vectors when interpreting the height map. If the heightmap effect looks strange when the camera moves (even with a reasonable :ref:`heightmap_scale<class_BaseMaterial3D_property_heightmap_scale>`), try setting this to ``true``.
+
 ----
 
 .. _class_BaseMaterial3D_property_heightmap_flip_texture:
@@ -1676,6 +1682,10 @@ If ``true``, height mapping is enabled (also called "parallax mapping" or "depth
 | *Getter*  | get_flag()      |
 +-----------+-----------------+
 
+If ``true``, interprets the height map texture as a depth map, with brighter values appearing to be "lower" in altitude compared to darker values.
+
+This can be enabled for compatibility with some materials authored for Godot 3.x. This is not necessary if the Invert import option was used to invert the depth map in Godot 3.x, in which case :ref:`heightmap_flip_texture<class_BaseMaterial3D_property_heightmap_flip_texture>` should remain ``false``.
+
 ----
 
 .. _class_BaseMaterial3D_property_heightmap_max_layers:
@@ -1688,6 +1698,10 @@ If ``true``, height mapping is enabled (also called "parallax mapping" or "depth
 | *Getter* | get_heightmap_deep_parallax_max_layers()      |
 +----------+-----------------------------------------------+
 
+The number of layers to use for parallax occlusion mapping when the camera is up close to the material. Higher values result in a more convincing depth effect, especially in materials that have steep height changes. Higher values have a significant cost on the GPU, so it should only be increased on materials where it makes a significant visual difference.
+
+\ **Note:** Only effective if :ref:`heightmap_deep_parallax<class_BaseMaterial3D_property_heightmap_deep_parallax>` is ``true``.
+
 ----
 
 .. _class_BaseMaterial3D_property_heightmap_min_layers:
@@ -1700,6 +1714,10 @@ If ``true``, height mapping is enabled (also called "parallax mapping" or "depth
 | *Getter* | get_heightmap_deep_parallax_min_layers()      |
 +----------+-----------------------------------------------+
 
+The number of layers to use for parallax occlusion mapping when the camera is far away from the material. Higher values result in a more convincing depth effect, especially in materials that have steep height changes. Higher values have a significant cost on the GPU, so it should only be increased on materials where it makes a significant visual difference.
+
+\ **Note:** Only effective if :ref:`heightmap_deep_parallax<class_BaseMaterial3D_property_heightmap_deep_parallax>` is ``true``.
+
 ----
 
 .. _class_BaseMaterial3D_property_heightmap_scale:
@@ -1707,13 +1725,17 @@ If ``true``, height mapping is enabled (also called "parallax mapping" or "depth
 - :ref:`float<class_float>` **heightmap_scale**
 
 +-----------+----------------------------+
-| *Default* | ``0.05``                   |
+| *Default* | ``5.0``                    |
 +-----------+----------------------------+
 | *Setter*  | set_heightmap_scale(value) |
 +-----------+----------------------------+
 | *Getter*  | get_heightmap_scale()      |
 +-----------+----------------------------+
 
+The heightmap scale to use for the parallax effect (see :ref:`heightmap_enabled<class_BaseMaterial3D_property_heightmap_enabled>`). The default value is tuned so that the highest point (value = 255) appears to be 5 cm higher than the lowest point (value = 0). Higher values result in a deeper appearance, but may result in artifacts appearing when looking at the material from oblique angles, especially when the camera moves. Negative values can be used to invert the parallax effect, but this is different from inverting the texture using :ref:`heightmap_flip_texture<class_BaseMaterial3D_property_heightmap_flip_texture>` as the material will also appear to be "closer" to the camera. In most cases, :ref:`heightmap_scale<class_BaseMaterial3D_property_heightmap_scale>` should be kept to a positive value.
+
+\ **Note:** If the height map effect looks strange regardless of this value, try adjusting :ref:`heightmap_flip_binormal<class_BaseMaterial3D_property_heightmap_flip_binormal>` and :ref:`heightmap_flip_tangent<class_BaseMaterial3D_property_heightmap_flip_tangent>`. See also :ref:`heightmap_texture<class_BaseMaterial3D_property_heightmap_texture>` for recommendations on authoring heightmap textures, as the way the heightmap texture is authored affects how :ref:`heightmap_scale<class_BaseMaterial3D_property_heightmap_scale>` behaves.
+
 ----
 
 .. _class_BaseMaterial3D_property_heightmap_texture:
@@ -1726,6 +1748,12 @@ If ``true``, height mapping is enabled (also called "parallax mapping" or "depth
 | *Getter* | get_texture()      |
 +----------+--------------------+
 
+The texture to use as a height map. See also :ref:`heightmap_enabled<class_BaseMaterial3D_property_heightmap_enabled>`.
+
+For best results, the texture should be normalized (with :ref:`heightmap_scale<class_BaseMaterial3D_property_heightmap_scale>` reduced to compensate). In `GIMP <https://gimp.org>`__, this can be done using **Colors > Auto > Equalize**. If the texture only uses a small part of its available range, the parallax effect may look strange, especially when the camera moves.
+
+\ **Note:** To reduce memory usage and improve loading times, you may be able to use a lower-resolution heightmap texture as most heightmaps are only comprised of low-frequency data.
+
 ----
 
 .. _class_BaseMaterial3D_property_metallic:
@@ -1756,7 +1784,7 @@ A high value makes the material appear more like a metal. Non-metals use their a
 | *Getter*  | get_specular()      |
 +-----------+---------------------+
 
-Sets the size of the specular lobe. The specular lobe is the bright spot that is reflected from light sources.
+Adjusts the strength of specular reflections. Specular reflections are composed of scene reflections and the specular lobe which is the bright spot that is reflected from light sources. When set to ``0.0``, no specular reflections will be visible. This differs from the :ref:`SPECULAR_DISABLED<class_BaseMaterial3D_constant_SPECULAR_DISABLED>` :ref:`SpecularMode<enum_BaseMaterial3D_SpecularMode>` as :ref:`SPECULAR_DISABLED<class_BaseMaterial3D_constant_SPECULAR_DISABLED>` only applies to the specular lobe from the light source.
 
 \ **Note:** Unlike :ref:`metallic<class_BaseMaterial3D_property_metallic>`, this is not energy-conserving, so it should be left at ``0.5`` in most cases. See also :ref:`roughness<class_BaseMaterial3D_property_roughness>`.
 
@@ -2490,6 +2518,8 @@ If ``true``, instead of using ``UV`` textures will use a triplanar texture looku
 
 A lower number blends the texture more softly while a higher number blends the texture more sharply.
 
+\ **Note:** :ref:`uv1_triplanar_sharpness<class_BaseMaterial3D_property_uv1_triplanar_sharpness>` is clamped between ``0.0`` and ``150.0`` (inclusive) as values outside that range can look broken depending on the mesh.
+
 ----
 
 .. _class_BaseMaterial3D_property_uv1_world_triplanar:
@@ -2570,6 +2600,8 @@ If ``true``, instead of using ``UV2`` textures will use a triplanar texture look
 
 A lower number blends the texture more softly while a higher number blends the texture more sharply.
 
+\ **Note:** :ref:`uv2_triplanar_sharpness<class_BaseMaterial3D_property_uv2_triplanar_sharpness>` is clamped between ``0.0`` and ``150.0`` (inclusive) as values outside that range can look broken depending on the mesh.
+
 ----
 
 .. _class_BaseMaterial3D_property_uv2_world_triplanar:

+ 0 - 10
classes/class_basis.rst

@@ -78,8 +78,6 @@ Methods
 +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Vector3<class_Vector3>`       | :ref:`get_euler<class_Basis_method_get_euler>` **(** :ref:`int<class_int>` order=2 **)** |const|                                                              |
 +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`               | :ref:`get_orthogonal_index<class_Basis_method_get_orthogonal_index>` **(** **)** |const|                                                                      |
-+-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Quaternion<class_Quaternion>` | :ref:`get_rotation_quaternion<class_Basis_method_get_rotation_quaternion>` **(** **)** |const|                                                                |
 +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Vector3<class_Vector3>`       | :ref:`get_scale<class_Basis_method_get_scale>` **(** **)** |const|                                                                                            |
@@ -278,14 +276,6 @@ Consider using the :ref:`get_rotation_quaternion<class_Basis_method_get_rotation
 
 ----
 
-.. _class_Basis_method_get_orthogonal_index:
-
-- :ref:`int<class_int>` **get_orthogonal_index** **(** **)** |const|
-
-This function considers a discretization of rotations into 24 points on unit sphere, lying along the vectors (x,y,z) with each component being either -1, 0, or 1, and returns the index of the point best representing the orientation of the object. It is mainly used by the :ref:`GridMap<class_GridMap>` editor. For further details, refer to the Godot source code.
-
-----
-
 .. _class_Basis_method_get_rotation_quaternion:
 
 - :ref:`Quaternion<class_Quaternion>` **get_rotation_quaternion** **(** **)** |const|

+ 26 - 26
classes/class_bitmap.rst

@@ -22,29 +22,29 @@ A two-dimensional array of boolean values, can be used to efficiently store a bi
 Methods
 -------
 
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Image<class_Image>`     | :ref:`convert_to_image<class_BitMap_method_convert_to_image>` **(** **)** |const|                                                                                |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                          | :ref:`create<class_BitMap_method_create>` **(** :ref:`Vector2<class_Vector2>` size **)**                                                                         |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                          | :ref:`create_from_image_alpha<class_BitMap_method_create_from_image_alpha>` **(** :ref:`Image<class_Image>` image, :ref:`float<class_float>` threshold=0.1 **)** |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`       | :ref:`get_bit<class_BitMap_method_get_bit>` **(** :ref:`Vector2<class_Vector2>` position **)** |const|                                                           |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>` | :ref:`get_size<class_BitMap_method_get_size>` **(** **)** |const|                                                                                                |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`         | :ref:`get_true_bit_count<class_BitMap_method_get_true_bit_count>` **(** **)** |const|                                                                            |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                          | :ref:`grow_mask<class_BitMap_method_grow_mask>` **(** :ref:`int<class_int>` pixels, :ref:`Rect2<class_Rect2>` rect **)**                                         |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`     | :ref:`opaque_to_polygons<class_BitMap_method_opaque_to_polygons>` **(** :ref:`Rect2<class_Rect2>` rect, :ref:`float<class_float>` epsilon=2.0 **)** |const|      |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                          | :ref:`resize<class_BitMap_method_resize>` **(** :ref:`Vector2<class_Vector2>` new_size **)**                                                                     |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                          | :ref:`set_bit<class_BitMap_method_set_bit>` **(** :ref:`Vector2<class_Vector2>` position, :ref:`bool<class_bool>` bit **)**                                      |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                          | :ref:`set_bit_rect<class_BitMap_method_set_bit_rect>` **(** :ref:`Rect2<class_Rect2>` rect, :ref:`bool<class_bool>` bit **)**                                    |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Image<class_Image>`                             | :ref:`convert_to_image<class_BitMap_method_convert_to_image>` **(** **)** |const|                                                                                |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                  | :ref:`create<class_BitMap_method_create>` **(** :ref:`Vector2<class_Vector2>` size **)**                                                                         |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                  | :ref:`create_from_image_alpha<class_BitMap_method_create_from_image_alpha>` **(** :ref:`Image<class_Image>` image, :ref:`float<class_float>` threshold=0.1 **)** |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                               | :ref:`get_bit<class_BitMap_method_get_bit>` **(** :ref:`Vector2<class_Vector2>` position **)** |const|                                                           |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>`                         | :ref:`get_size<class_BitMap_method_get_size>` **(** **)** |const|                                                                                                |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                 | :ref:`get_true_bit_count<class_BitMap_method_get_true_bit_count>` **(** **)** |const|                                                                            |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                  | :ref:`grow_mask<class_BitMap_method_grow_mask>` **(** :ref:`int<class_int>` pixels, :ref:`Rect2<class_Rect2>` rect **)**                                         |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedVector2Array[]<class_PackedVector2Array>` | :ref:`opaque_to_polygons<class_BitMap_method_opaque_to_polygons>` **(** :ref:`Rect2<class_Rect2>` rect, :ref:`float<class_float>` epsilon=2.0 **)** |const|      |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                  | :ref:`resize<class_BitMap_method_resize>` **(** :ref:`Vector2<class_Vector2>` new_size **)**                                                                     |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                  | :ref:`set_bit<class_BitMap_method_set_bit>` **(** :ref:`Vector2<class_Vector2>` position, :ref:`bool<class_bool>` bit **)**                                      |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                  | :ref:`set_bit_rect<class_BitMap_method_set_bit_rect>` **(** :ref:`Rect2<class_Rect2>` rect, :ref:`bool<class_bool>` bit **)**                                    |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Method Descriptions
 -------------------
@@ -93,7 +93,7 @@ Returns bitmap's dimensions.
 
 - :ref:`int<class_int>` **get_true_bit_count** **(** **)** |const|
 
-Returns the amount of bitmap elements that are set to ``true``.
+Returns the number of bitmap elements that are set to ``true``.
 
 ----
 
@@ -107,7 +107,7 @@ Applies morphological dilation or erosion to the bitmap. If ``pixels`` is positi
 
 .. _class_BitMap_method_opaque_to_polygons:
 
-- :ref:`Array<class_Array>` **opaque_to_polygons** **(** :ref:`Rect2<class_Rect2>` rect, :ref:`float<class_float>` epsilon=2.0 **)** |const|
+- :ref:`PackedVector2Array[]<class_PackedVector2Array>` **opaque_to_polygons** **(** :ref:`Rect2<class_Rect2>` rect, :ref:`float<class_float>` epsilon=2.0 **)** |const|
 
 Creates an :ref:`Array<class_Array>` of polygons covering a rectangular portion of the bitmap. It uses a marching squares algorithm, followed by Ramer-Douglas-Peucker (RDP) reduction of the number of vertices. Each polygon is described as a :ref:`PackedVector2Array<class_PackedVector2Array>` of its vertices.
 
@@ -117,7 +117,7 @@ To get polygons covering the whole bitmap, pass:
 
     Rect2(Vector2(), get_size())
 
-\ ``epsilon`` is passed to RDP to control how accurately the polygons cover the bitmap: a lower ``epsilon`` corresponds to more points in the polygons.
+``epsilon`` is passed to RDP to control how accurately the polygons cover the bitmap: a lower ``epsilon`` corresponds to more points in the polygons.
 
 ----
 

+ 1 - 1
classes/class_bool.rst

@@ -138,7 +138,7 @@ Operators
 +-------------------------+--------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>` | :ref:`operator !=<class_bool_operator_neq_bool>` **(** :ref:`bool<class_bool>` right **)** |
 +-------------------------+--------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>` | :ref:`operator <<class_bool_operator_lt_bool>` **(** :ref:`bool<class_bool>` right **)**   |
+| :ref:`bool<class_bool>` | :ref:`operator \<<class_bool_operator_lt_bool>` **(** :ref:`bool<class_bool>` right **)**  |
 +-------------------------+--------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>` | :ref:`operator ==<class_bool_operator_eq_bool>` **(** :ref:`bool<class_bool>` right **)**  |
 +-------------------------+--------------------------------------------------------------------------------------------+

+ 1 - 1
classes/class_button.rst

@@ -469,7 +469,7 @@ Icon modulate :ref:`Color<class_Color>` used when the ``Button`` is being presse
 | *Default* | ``2`` |
 +-----------+-------+
 
-The horizontal space between ``Button``'s icon and text.
+The horizontal space between ``Button``'s icon and text. Negative values will be treated as ``0`` when used.
 
 ----
 

+ 6 - 6
classes/class_buttongroup.rst

@@ -31,11 +31,11 @@ Properties
 Methods
 -------
 
-+-------------------------------------+------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`           | :ref:`get_buttons<class_ButtonGroup_method_get_buttons>` **(** **)**               |
-+-------------------------------------+------------------------------------------------------------------------------------+
-| :ref:`BaseButton<class_BaseButton>` | :ref:`get_pressed_button<class_ButtonGroup_method_get_pressed_button>` **(** **)** |
-+-------------------------------------+------------------------------------------------------------------------------------+
++---------------------------------------+------------------------------------------------------------------------------------+
+| :ref:`BaseButton[]<class_BaseButton>` | :ref:`get_buttons<class_ButtonGroup_method_get_buttons>` **(** **)**               |
++---------------------------------------+------------------------------------------------------------------------------------+
+| :ref:`BaseButton<class_BaseButton>`   | :ref:`get_pressed_button<class_ButtonGroup_method_get_pressed_button>` **(** **)** |
++---------------------------------------+------------------------------------------------------------------------------------+
 
 Signals
 -------
@@ -51,7 +51,7 @@ Method Descriptions
 
 .. _class_ButtonGroup_method_get_buttons:
 
-- :ref:`Array<class_Array>` **get_buttons** **(** **)**
+- :ref:`BaseButton[]<class_BaseButton>` **get_buttons** **(** **)**
 
 Returns an :ref:`Array<class_Array>` of :ref:`Button<class_Button>`\ s who have this as their ``ButtonGroup`` (see :ref:`BaseButton.button_group<class_BaseButton_property_button_group>`).
 

+ 5 - 0
classes/class_callable.rst

@@ -149,6 +149,11 @@ Calls the method represented by this ``Callable``. Arguments can be passed and s
 
 Calls the method represented by this ``Callable`` in deferred mode, i.e. during the idle frame. Arguments can be passed and should match the method's signature.
 
+::
+
+    func _ready():
+        grab_focus.call_deferred()
+
 ----
 
 .. _class_Callable_method_get_method:

+ 7 - 5
classes/class_camera3d.rst

@@ -71,7 +71,7 @@ Methods
 +---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`               | :ref:`get_cull_mask_value<class_Camera3D_method_get_cull_mask_value>` **(** :ref:`int<class_int>` layer_number **)** |const|                                                                              |
 +---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`             | :ref:`get_frustum<class_Camera3D_method_get_frustum>` **(** **)** |const|                                                                                                                                 |
+| :ref:`Plane[]<class_Plane>`           | :ref:`get_frustum<class_Camera3D_method_get_frustum>` **(** **)** |const|                                                                                                                                 |
 +---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`RID<class_RID>`                 | :ref:`get_pyramid_shape_rid<class_Camera3D_method_get_pyramid_shape_rid>` **(** **)**                                                                                                                     |
 +---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -288,6 +288,8 @@ For reference, the default vertical field of view value (``75.0``) is equivalent
 
 The camera's frustum offset. This can be changed from the default to create "tilted frustum" effects such as `Y-shearing <https://zdoom.org/wiki/Y-shearing>`__.
 
+\ **Note:** Only effective if :ref:`projection<class_Camera3D_property_projection>` is :ref:`PROJECTION_FRUSTUM<class_Camera3D_constant_PROJECTION_FRUSTUM>`.
+
 ----
 
 .. _class_Camera3D_property_h_offset:
@@ -366,7 +368,7 @@ The camera's projection mode. In :ref:`PROJECTION_PERSPECTIVE<class_Camera3D_con
 | *Getter*  | get_size()      |
 +-----------+-----------------+
 
-The camera's size measured as 1/2 the width or height. Only applicable in orthogonal and frustum modes. Since :ref:`keep_aspect<class_Camera3D_property_keep_aspect>` locks on axis, ``size`` sets the other axis' size length.
+The camera's size in meters measured as the diameter of the width or height, depending on :ref:`keep_aspect<class_Camera3D_property_keep_aspect>`. Only applicable in orthogonal and frustum modes.
 
 ----
 
@@ -421,7 +423,7 @@ Returns whether or not the specified layer of the :ref:`cull_mask<class_Camera3D
 
 .. _class_Camera3D_method_get_frustum:
 
-- :ref:`Array<class_Array>` **get_frustum** **(** **)** |const|
+- :ref:`Plane[]<class_Plane>` **get_frustum** **(** **)** |const|
 
 Returns the camera's frustum planes in world space units as an array of :ref:`Plane<class_Plane>`\ s in the following order: near, far, left, top, right, bottom. Not to be confused with :ref:`frustum_offset<class_Camera3D_property_frustum_offset>`.
 
@@ -505,7 +507,7 @@ Based on ``value``, enables or disables the specified layer in the :ref:`cull_ma
 
 - void **set_frustum** **(** :ref:`float<class_float>` size, :ref:`Vector2<class_Vector2>` offset, :ref:`float<class_float>` z_near, :ref:`float<class_float>` z_far **)**
 
-Sets the camera projection to frustum mode (see :ref:`PROJECTION_FRUSTUM<class_Camera3D_constant_PROJECTION_FRUSTUM>`), by specifying a ``size``, an ``offset``, and the ``z_near`` and ``z_far`` clip planes in world space units.
+Sets the camera projection to frustum mode (see :ref:`PROJECTION_FRUSTUM<class_Camera3D_constant_PROJECTION_FRUSTUM>`), by specifying a ``size``, an ``offset``, and the ``z_near`` and ``z_far`` clip planes in world space units. See also :ref:`frustum_offset<class_Camera3D_property_frustum_offset>`.
 
 ----
 
@@ -538,7 +540,7 @@ Returns the 2D coordinate in the :ref:`Viewport<class_Viewport>` rectangle that
     # This code block is part of a script that inherits from Node3D.
     # `control` is a reference to a node inheriting from Control.
     control.visible = not get_viewport().get_camera_3d().is_position_behind(global_transform.origin)
-    control.rect_position = get_viewport().get_camera_3d().unproject_position(global_transform.origin)
+    control.position = get_viewport().get_camera_3d().unproject_position(global_transform.origin)
 
 .. |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.)`

+ 12 - 12
classes/class_cameraserver.rst

@@ -26,17 +26,17 @@ It is notably used to provide AR modules with a video feed from the camera.
 Methods
 -------
 
-+-------------------------------------+----------------------------------------------------------------------------------------------------------------+
-| void                                | :ref:`add_feed<class_CameraServer_method_add_feed>` **(** :ref:`CameraFeed<class_CameraFeed>` feed **)**       |
-+-------------------------------------+----------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`           | :ref:`feeds<class_CameraServer_method_feeds>` **(** **)**                                                      |
-+-------------------------------------+----------------------------------------------------------------------------------------------------------------+
-| :ref:`CameraFeed<class_CameraFeed>` | :ref:`get_feed<class_CameraServer_method_get_feed>` **(** :ref:`int<class_int>` index **)**                    |
-+-------------------------------------+----------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`               | :ref:`get_feed_count<class_CameraServer_method_get_feed_count>` **(** **)**                                    |
-+-------------------------------------+----------------------------------------------------------------------------------------------------------------+
-| void                                | :ref:`remove_feed<class_CameraServer_method_remove_feed>` **(** :ref:`CameraFeed<class_CameraFeed>` feed **)** |
-+-------------------------------------+----------------------------------------------------------------------------------------------------------------+
++---------------------------------------+----------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`add_feed<class_CameraServer_method_add_feed>` **(** :ref:`CameraFeed<class_CameraFeed>` feed **)**       |
++---------------------------------------+----------------------------------------------------------------------------------------------------------------+
+| :ref:`CameraFeed[]<class_CameraFeed>` | :ref:`feeds<class_CameraServer_method_feeds>` **(** **)**                                                      |
++---------------------------------------+----------------------------------------------------------------------------------------------------------------+
+| :ref:`CameraFeed<class_CameraFeed>`   | :ref:`get_feed<class_CameraServer_method_get_feed>` **(** :ref:`int<class_int>` index **)**                    |
++---------------------------------------+----------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                 | :ref:`get_feed_count<class_CameraServer_method_get_feed_count>` **(** **)**                                    |
++---------------------------------------+----------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`remove_feed<class_CameraServer_method_remove_feed>` **(** :ref:`CameraFeed<class_CameraFeed>` feed **)** |
++---------------------------------------+----------------------------------------------------------------------------------------------------------------+
 
 Signals
 -------
@@ -91,7 +91,7 @@ Adds the camera ``feed`` to the camera server.
 
 .. _class_CameraServer_method_feeds:
 
-- :ref:`Array<class_Array>` **feeds** **(** **)**
+- :ref:`CameraFeed[]<class_CameraFeed>` **feeds** **(** **)**
 
 Returns an array of :ref:`CameraFeed<class_CameraFeed>`\ s.
 

+ 47 - 24
classes/class_canvasitem.rst

@@ -21,7 +21,7 @@ Description
 
 Base class of anything 2D. Canvas items are laid out in a tree; children inherit and extend their parent's transform. ``CanvasItem`` is extended by :ref:`Control<class_Control>` for anything GUI-related, and by :ref:`Node2D<class_Node2D>` for anything related to the 2D engine.
 
-Any ``CanvasItem`` can draw. For this, :ref:`update<class_CanvasItem_method_update>` must be called, then :ref:`NOTIFICATION_DRAW<class_CanvasItem_constant_NOTIFICATION_DRAW>` will be received on idle time to request redraw. Because of this, canvas items don't need to be redrawn on every frame, improving the performance significantly. Several functions for drawing on the ``CanvasItem`` are provided (see ``draw_*`` functions). However, they can only be used inside the :ref:`Object._notification<class_Object_method__notification>`, signal or :ref:`_draw<class_CanvasItem_method__draw>` virtual functions.
+Any ``CanvasItem`` can draw. For this, :ref:`queue_redraw<class_CanvasItem_method_queue_redraw>` is called by the engine, then :ref:`NOTIFICATION_DRAW<class_CanvasItem_constant_NOTIFICATION_DRAW>` will be received on idle time to request redraw. Because of this, canvas items don't need to be redrawn on every frame, improving the performance significantly. Several functions for drawing on the ``CanvasItem`` are provided (see ``draw_*`` functions). However, they can only be used inside :ref:`_draw<class_CanvasItem_method__draw>`, its corresponding :ref:`Object._notification<class_Object_method__notification>` or methods connected to the :ref:`draw<class_CanvasItem_signal_draw>` signal.
 
 Canvas items are drawn in tree order. By default, children are on top of their parents so a root ``CanvasItem`` will be drawn behind everything. This behavior can be changed on a per-item basis.
 
@@ -29,7 +29,7 @@ A ``CanvasItem`` can also be hidden, which will also hide its children. It provi
 
 Ultimately, a transform notification can be requested, which will notify the node that its global position changed in case the parent tree changed.
 
-\ **Note:** Unless otherwise specified, all methods that have angle parameters must have angles specified as *radians*. To convert degrees to radians, use :ref:`@GlobalScope.deg2rad<class_@GlobalScope_method_deg2rad>`.
+\ **Note:** Unless otherwise specified, all methods that have angle parameters must have angles specified as *radians*. To convert degrees to radians, use :ref:`@GlobalScope.deg_to_rad<class_@GlobalScope_method_deg_to_rad>`.
 
 Tutorials
 ---------
@@ -89,6 +89,8 @@ Methods
 +---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                  | :ref:`draw_end_animation<class_CanvasItem_method_draw_end_animation>` **(** **)**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
 +---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`draw_lcd_texture_rect_region<class_CanvasItem_method_draw_lcd_texture_rect_region>` **(** :ref:`Texture2D<class_Texture2D>` texture, :ref:`Rect2<class_Rect2>` rect, :ref:`Rect2<class_Rect2>` src_rect, :ref:`Color<class_Color>` modulate=Color(1, 1, 1, 1) **)**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
++---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                  | :ref:`draw_line<class_CanvasItem_method_draw_line>` **(** :ref:`Vector2<class_Vector2>` from, :ref:`Vector2<class_Vector2>` to, :ref:`Color<class_Color>` color, :ref:`float<class_float>` width=1.0, :ref:`bool<class_bool>` antialiased=false **)**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
 +---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                  | :ref:`draw_mesh<class_CanvasItem_method_draw_mesh>` **(** :ref:`Mesh<class_Mesh>` mesh, :ref:`Texture2D<class_Texture2D>` texture, :ref:`Transform2D<class_Transform2D>` transform=Transform2D(1, 0, 0, 1, 0, 0), :ref:`Color<class_Color>` modulate=Color(1, 1, 1, 1) **)**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
@@ -169,14 +171,14 @@ Methods
 +---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`InputEvent<class_InputEvent>`   | :ref:`make_input_local<class_CanvasItem_method_make_input_local>` **(** :ref:`InputEvent<class_InputEvent>` event **)** |const|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
 +---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`queue_redraw<class_CanvasItem_method_queue_redraw>` **(** **)**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
++---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                  | :ref:`set_notify_local_transform<class_CanvasItem_method_set_notify_local_transform>` **(** :ref:`bool<class_bool>` enable **)**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
 +---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                  | :ref:`set_notify_transform<class_CanvasItem_method_set_notify_transform>` **(** :ref:`bool<class_bool>` enable **)**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
 +---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                  | :ref:`show<class_CanvasItem_method_show>` **(** **)**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
 +---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`update<class_CanvasItem_method_update>` **(** **)**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
-+---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Signals
 -------
@@ -185,7 +187,9 @@ Signals
 
 - **draw** **(** **)**
 
-Emitted when the ``CanvasItem`` must redraw. This can only be connected realtime, as deferred will not allow drawing.
+Emitted when the ``CanvasItem`` must redraw, *after* the related :ref:`NOTIFICATION_DRAW<class_CanvasItem_constant_NOTIFICATION_DRAW>` notification, and *before* :ref:`_draw<class_CanvasItem_method__draw>` is called.
+
+\ **Note:** Deferred connections do not allow drawing through the ``draw_*`` methods.
 
 ----
 
@@ -244,11 +248,11 @@ enum **TextureFilter**:
 
 - **TEXTURE_FILTER_LINEAR_WITH_MIPMAPS** = **4** --- The texture filter blends between the nearest 4 pixels and between the nearest 2 mipmaps. Use this for non-pixel art textures that may be viewed at a low scale (e.g. due to :ref:`Camera2D<class_Camera2D>` zoom), as mipmaps are important to smooth out pixels that are smaller than on-screen pixels.
 
-- **TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC** = **5** --- The texture filter reads from the nearest pixel, but selects a mipmap based on the angle between the surface and the camera view. This reduces artifacts on surfaces that are almost in line with the camera.
+- **TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC** = **5** --- The texture filter reads from the nearest pixel, but selects a mipmap based on the angle between the surface and the camera view. This reduces artifacts on surfaces that are almost in line with the camera. The anisotropic filtering level can be changed by adjusting :ref:`ProjectSettings.rendering/textures/default_filters/anisotropic_filtering_level<class_ProjectSettings_property_rendering/textures/default_filters/anisotropic_filtering_level>`.
 
 \ **Note:** This texture filter is rarely useful in 2D projects. :ref:`TEXTURE_FILTER_NEAREST_WITH_MIPMAPS<class_CanvasItem_constant_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS>` is usually more appropriate.
 
-- **TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC** = **6** --- The texture filter blends between the nearest 4 pixels and selects a mipmap based on the angle between the surface and the camera view. This reduces artifacts on surfaces that are almost in line with the camera. This is the slowest of the filtering options, but results in the highest quality texturing.
+- **TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC** = **6** --- The texture filter blends between the nearest 4 pixels and selects a mipmap based on the angle between the surface and the camera view. This reduces artifacts on surfaces that are almost in line with the camera. This is the slowest of the filtering options, but results in the highest quality texturing. The anisotropic filtering level can be changed by adjusting :ref:`ProjectSettings.rendering/textures/default_filters/anisotropic_filtering_level<class_ProjectSettings_property_rendering/textures/default_filters/anisotropic_filtering_level>`.
 
 \ **Note:** This texture filter is rarely useful in 2D projects. :ref:`TEXTURE_FILTER_LINEAR_WITH_MIPMAPS<class_CanvasItem_constant_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS>` is usually more appropriate.
 
@@ -299,7 +303,7 @@ Constants
 
 - **NOTIFICATION_LOCAL_TRANSFORM_CHANGED** = **35** --- The ``CanvasItem``'s local transform has changed. This notification is only received if enabled by :ref:`set_notify_local_transform<class_CanvasItem_method_set_notify_local_transform>`.
 
-- **NOTIFICATION_DRAW** = **30** --- The ``CanvasItem`` is requested to draw.
+- **NOTIFICATION_DRAW** = **30** --- The ``CanvasItem`` is requested to draw (see :ref:`_draw<class_CanvasItem_method__draw>`).
 
 - **NOTIFICATION_VISIBILITY_CHANGED** = **31** --- The ``CanvasItem``'s visibility has changed.
 
@@ -489,7 +493,9 @@ Method Descriptions
 
 - void **_draw** **(** **)** |virtual|
 
-Overridable function called by the engine (if defined) to draw the canvas item.
+Called when ``CanvasItem`` has been requested to redraw (after :ref:`queue_redraw<class_CanvasItem_method_queue_redraw>` is called, either manually or by the engine).
+
+Corresponds to the :ref:`NOTIFICATION_DRAW<class_CanvasItem_constant_NOTIFICATION_DRAW>` notification in :ref:`Object._notification<class_Object_method__notification>`.
 
 ----
 
@@ -537,7 +543,7 @@ Draws a colored, filled circle. See also :ref:`draw_arc<class_CanvasItem_method_
 
 - void **draw_colored_polygon** **(** :ref:`PackedVector2Array<class_PackedVector2Array>` points, :ref:`Color<class_Color>` color, :ref:`PackedVector2Array<class_PackedVector2Array>` uvs=PackedVector2Array(), :ref:`Texture2D<class_Texture2D>` texture=null **)**
 
-Draws a colored polygon of any amount of points, convex or concave. Unlike :ref:`draw_polygon<class_CanvasItem_method_draw_polygon>`, a single color must be specified for the whole polygon.
+Draws a colored polygon of any number of points, convex or concave. Unlike :ref:`draw_polygon<class_CanvasItem_method_draw_polygon>`, a single color must be specified for the whole polygon.
 
 ----
 
@@ -557,6 +563,23 @@ After submitting all animations slices via :ref:`draw_animation_slice<class_Canv
 
 ----
 
+.. _class_CanvasItem_method_draw_lcd_texture_rect_region:
+
+- void **draw_lcd_texture_rect_region** **(** :ref:`Texture2D<class_Texture2D>` texture, :ref:`Rect2<class_Rect2>` rect, :ref:`Rect2<class_Rect2>` src_rect, :ref:`Color<class_Color>` modulate=Color(1, 1, 1, 1) **)**
+
+Draws a textured rectangle region of the font texture with LCD sub-pixel anti-aliasing at a given position, optionally modulated by a color.
+
+Texture is drawn using the following blend operation, blend mode of the :ref:`CanvasItemMaterial<class_CanvasItemMaterial>` is ignored:
+
+::
+
+    dst.r = texture.r * modulate.r * modulate.a + dst.r * (1.0 - texture.r * modulate.a);
+    dst.g = texture.g * modulate.g * modulate.a + dst.g * (1.0 - texture.g * modulate.a);
+    dst.b = texture.b * modulate.b * modulate.a + dst.b * (1.0 - texture.b * modulate.a);
+    dst.a = modulate.a + dst.a * (1.0 - modulate.a);
+
+----
+
 .. _class_CanvasItem_method_draw_line:
 
 - void **draw_line** **(** :ref:`Vector2<class_Vector2>` from, :ref:`Vector2<class_Vector2>` to, :ref:`Color<class_Color>` color, :ref:`float<class_float>` width=1.0, :ref:`bool<class_bool>` antialiased=false **)**
@@ -605,7 +628,7 @@ Draws multiple disconnected lines with a uniform ``width`` and segment-by-segmen
 
 - void **draw_multiline_string** **(** :ref:`Font<class_Font>` font, :ref:`Vector2<class_Vector2>` pos, :ref:`String<class_String>` text, :ref:`HorizontalAlignment<enum_@GlobalScope_HorizontalAlignment>` alignment=0, :ref:`float<class_float>` width=-1, :ref:`int<class_int>` font_size=16, :ref:`int<class_int>` max_lines=-1, :ref:`Color<class_Color>` modulate=Color(1, 1, 1, 1), :ref:`LineBreakFlag<enum_TextServer_LineBreakFlag>` brk_flags=3, :ref:`JustificationFlag<enum_TextServer_JustificationFlag>` jst_flags=3, :ref:`Direction<enum_TextServer_Direction>` direction=0, :ref:`Orientation<enum_TextServer_Orientation>` orientation=0 **)** |const|
 
-Breaks ``text`` to the lines and draws it using the specified ``font`` at the ``position`` (top-left corner). The text will have its color multiplied by ``modulate``. If ``clip_w`` is greater than or equal to 0, the text will be clipped if it exceeds the specified width.
+Breaks ``text`` into lines and draws it using the specified ``font`` at the ``pos`` (top-left corner). The text will have its color multiplied by ``modulate``. If ``width`` is greater than or equal to 0, the text will be clipped if it exceeds the specified width.
 
 ----
 
@@ -613,7 +636,7 @@ Breaks ``text`` to the lines and draws it using the specified ``font`` at the ``
 
 - void **draw_multiline_string_outline** **(** :ref:`Font<class_Font>` font, :ref:`Vector2<class_Vector2>` pos, :ref:`String<class_String>` text, :ref:`HorizontalAlignment<enum_@GlobalScope_HorizontalAlignment>` alignment=0, :ref:`float<class_float>` width=-1, :ref:`int<class_int>` font_size=16, :ref:`int<class_int>` max_lines=-1, :ref:`int<class_int>` size=1, :ref:`Color<class_Color>` modulate=Color(1, 1, 1, 1), :ref:`LineBreakFlag<enum_TextServer_LineBreakFlag>` brk_flags=3, :ref:`JustificationFlag<enum_TextServer_JustificationFlag>` jst_flags=3, :ref:`Direction<enum_TextServer_Direction>` direction=0, :ref:`Orientation<enum_TextServer_Orientation>` orientation=0 **)** |const|
 
-Breaks ``text`` to the lines and draws text outline using the specified ``font`` at the ``position`` (top-left corner). The text will have its color multiplied by ``modulate``. If ``clip_w`` is greater than or equal to 0, the text will be clipped if it exceeds the specified width.
+Breaks ``text`` to the lines and draws text outline using the specified ``font`` at the ``pos`` (top-left corner). The text will have its color multiplied by ``modulate``. If ``width`` is greater than or equal to 0, the text will be clipped if it exceeds the specified width.
 
 ----
 
@@ -629,7 +652,7 @@ Draws a :ref:`MultiMesh<class_MultiMesh>` in 2D with the provided texture. See :
 
 - void **draw_polygon** **(** :ref:`PackedVector2Array<class_PackedVector2Array>` points, :ref:`PackedColorArray<class_PackedColorArray>` colors, :ref:`PackedVector2Array<class_PackedVector2Array>` uvs=PackedVector2Array(), :ref:`Texture2D<class_Texture2D>` texture=null **)**
 
-Draws a solid polygon of any amount of points, convex or concave. Unlike :ref:`draw_colored_polygon<class_CanvasItem_method_draw_colored_polygon>`, each point's color can be changed individually. See also :ref:`draw_polyline<class_CanvasItem_method_draw_polyline>` and :ref:`draw_polyline_colors<class_CanvasItem_method_draw_polyline_colors>`.
+Draws a solid polygon of any number of points, convex or concave. Unlike :ref:`draw_colored_polygon<class_CanvasItem_method_draw_colored_polygon>`, each point's color can be changed individually. See also :ref:`draw_polyline<class_CanvasItem_method_draw_polyline>` and :ref:`draw_polyline_colors<class_CanvasItem_method_draw_polyline_colors>`.
 
 ----
 
@@ -687,7 +710,7 @@ Sets a custom transform for drawing via matrix. Anything drawn afterwards will b
 
 - void **draw_string** **(** :ref:`Font<class_Font>` font, :ref:`Vector2<class_Vector2>` pos, :ref:`String<class_String>` text, :ref:`HorizontalAlignment<enum_@GlobalScope_HorizontalAlignment>` alignment=0, :ref:`float<class_float>` width=-1, :ref:`int<class_int>` font_size=16, :ref:`Color<class_Color>` modulate=Color(1, 1, 1, 1), :ref:`JustificationFlag<enum_TextServer_JustificationFlag>` jst_flags=3, :ref:`Direction<enum_TextServer_Direction>` direction=0, :ref:`Orientation<enum_TextServer_Orientation>` orientation=0 **)** |const|
 
-Draws ``text`` using the specified ``font`` at the ``position`` (bottom-left corner using the baseline of the font). The text will have its color multiplied by ``modulate``. If ``clip_w`` is greater than or equal to 0, the text will be clipped if it exceeds the specified width.
+Draws ``text`` using the specified ``font`` at the ``pos`` (bottom-left corner using the baseline of the font). The text will have its color multiplied by ``modulate``. If ``width`` is greater than or equal to 0, the text will be clipped if it exceeds the specified width.
 
 \ **Example using the default project font:**\ 
 
@@ -722,7 +745,7 @@ See also :ref:`Font.draw_string<class_Font_method_draw_string>`.
 
 - void **draw_string_outline** **(** :ref:`Font<class_Font>` font, :ref:`Vector2<class_Vector2>` pos, :ref:`String<class_String>` text, :ref:`HorizontalAlignment<enum_@GlobalScope_HorizontalAlignment>` alignment=0, :ref:`float<class_float>` width=-1, :ref:`int<class_int>` font_size=16, :ref:`int<class_int>` size=1, :ref:`Color<class_Color>` modulate=Color(1, 1, 1, 1), :ref:`JustificationFlag<enum_TextServer_JustificationFlag>` jst_flags=3, :ref:`Direction<enum_TextServer_Direction>` direction=0, :ref:`Orientation<enum_TextServer_Orientation>` orientation=0 **)** |const|
 
-Draws ``text`` outline using the specified ``font`` at the ``position`` (bottom-left corner using the baseline of the font). The text will have its color multiplied by ``modulate``. If ``clip_w`` is greater than or equal to 0, the text will be clipped if it exceeds the specified width.
+Draws ``text`` outline using the specified ``font`` at the ``pos`` (bottom-left corner using the baseline of the font). The text will have its color multiplied by ``modulate``. If ``width`` is greater than or equal to 0, the text will be clipped if it exceeds the specified width.
 
 ----
 
@@ -892,7 +915,7 @@ Returns ``true`` if global transform notifications are communicated to children.
 
 - :ref:`bool<class_bool>` **is_visible_in_tree** **(** **)** |const|
 
-Returns ``true`` if the node is present in the :ref:`SceneTree<class_SceneTree>`, its :ref:`visible<class_CanvasItem_property_visible>` property is ``true`` and all its antecedents are also visible. If any antecedent is hidden, this node will not be visible in the scene tree.
+Returns ``true`` if the node is present in the :ref:`SceneTree<class_SceneTree>`, its :ref:`visible<class_CanvasItem_property_visible>` property is ``true`` and all its antecedents are also visible. If any antecedent is hidden, this node will not be visible in the scene tree, and is consequently not drawn (see :ref:`_draw<class_CanvasItem_method__draw>`).
 
 ----
 
@@ -912,6 +935,14 @@ Transformations issued by ``event``'s inputs are applied in local space instead
 
 ----
 
+.. _class_CanvasItem_method_queue_redraw:
+
+- void **queue_redraw** **(** **)**
+
+Queues the ``CanvasItem`` to redraw. During idle time, if ``CanvasItem`` is visible, :ref:`NOTIFICATION_DRAW<class_CanvasItem_constant_NOTIFICATION_DRAW>` is sent and :ref:`_draw<class_CanvasItem_method__draw>` is called. This only occurs **once** per frame, even if this method has been called multiple times.
+
+----
+
 .. _class_CanvasItem_method_set_notify_local_transform:
 
 - void **set_notify_local_transform** **(** :ref:`bool<class_bool>` enable **)**
@@ -934,14 +965,6 @@ If ``enable`` is ``true``, this node will receive :ref:`NOTIFICATION_TRANSFORM_C
 
 Show the ``CanvasItem`` if it's currently hidden. This is equivalent to setting :ref:`visible<class_CanvasItem_property_visible>` to ``true``. For controls that inherit :ref:`Popup<class_Popup>`, the correct way to make them visible is to call one of the multiple ``popup*()`` functions instead.
 
-----
-
-.. _class_CanvasItem_method_update:
-
-- void **update** **(** **)**
-
-Queue the ``CanvasItem`` for update. :ref:`NOTIFICATION_DRAW<class_CanvasItem_constant_NOTIFICATION_DRAW>` will be called on idle time to request redraw.
-
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`

+ 1 - 1
classes/class_canvasitemmaterial.rst

@@ -176,7 +176,7 @@ The number of rows in the spritesheet assigned as :ref:`Texture2D<class_Texture2
 | *Getter*  | get_particles_animation()      |
 +-----------+--------------------------------+
 
-If ``true``, enable spritesheet-based animation features when assigned to :ref:`GPUParticles2D<class_GPUParticles2D>` and :ref:`CPUParticles2D<class_CPUParticles2D>` nodes. The :ref:`ParticlesMaterial.anim_speed_max<class_ParticlesMaterial_property_anim_speed_max>` or :ref:`CPUParticles2D.anim_speed_max<class_CPUParticles2D_property_anim_speed_max>` should also be set to a positive value for the animation to play.
+If ``true``, enable spritesheet-based animation features when assigned to :ref:`GPUParticles2D<class_GPUParticles2D>` and :ref:`CPUParticles2D<class_CPUParticles2D>` nodes. The :ref:`ParticleProcessMaterial.anim_speed_max<class_ParticleProcessMaterial_property_anim_speed_max>` or :ref:`CPUParticles2D.anim_speed_max<class_CPUParticles2D_property_anim_speed_max>` should also be set to a positive value for the animation to play.
 
 This property (and other ``particles_anim_*`` properties that depend on it) has no effect on other types of nodes.
 

+ 22 - 22
classes/class_canvaslayer.rst

@@ -33,25 +33,25 @@ Tutorials
 Properties
 ----------
 
-+---------------------------------------+----------------------------------------------------------------------------------+-----------------------------------+
-| :ref:`Node<class_Node>`               | :ref:`custom_viewport<class_CanvasLayer_property_custom_viewport>`               |                                   |
-+---------------------------------------+----------------------------------------------------------------------------------+-----------------------------------+
-| :ref:`bool<class_bool>`               | :ref:`follow_viewport_enable<class_CanvasLayer_property_follow_viewport_enable>` | ``false``                         |
-+---------------------------------------+----------------------------------------------------------------------------------+-----------------------------------+
-| :ref:`float<class_float>`             | :ref:`follow_viewport_scale<class_CanvasLayer_property_follow_viewport_scale>`   | ``1.0``                           |
-+---------------------------------------+----------------------------------------------------------------------------------+-----------------------------------+
-| :ref:`int<class_int>`                 | :ref:`layer<class_CanvasLayer_property_layer>`                                   | ``1``                             |
-+---------------------------------------+----------------------------------------------------------------------------------+-----------------------------------+
-| :ref:`Vector2<class_Vector2>`         | :ref:`offset<class_CanvasLayer_property_offset>`                                 | ``Vector2(0, 0)``                 |
-+---------------------------------------+----------------------------------------------------------------------------------+-----------------------------------+
-| :ref:`float<class_float>`             | :ref:`rotation<class_CanvasLayer_property_rotation>`                             | ``0.0``                           |
-+---------------------------------------+----------------------------------------------------------------------------------+-----------------------------------+
-| :ref:`Vector2<class_Vector2>`         | :ref:`scale<class_CanvasLayer_property_scale>`                                   | ``Vector2(1, 1)``                 |
-+---------------------------------------+----------------------------------------------------------------------------------+-----------------------------------+
-| :ref:`Transform2D<class_Transform2D>` | :ref:`transform<class_CanvasLayer_property_transform>`                           | ``Transform2D(1, 0, 0, 1, 0, 0)`` |
-+---------------------------------------+----------------------------------------------------------------------------------+-----------------------------------+
-| :ref:`bool<class_bool>`               | :ref:`visible<class_CanvasLayer_property_visible>`                               | ``true``                          |
-+---------------------------------------+----------------------------------------------------------------------------------+-----------------------------------+
++---------------------------------------+------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`Node<class_Node>`               | :ref:`custom_viewport<class_CanvasLayer_property_custom_viewport>`                 |                                   |
++---------------------------------------+------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`bool<class_bool>`               | :ref:`follow_viewport_enabled<class_CanvasLayer_property_follow_viewport_enabled>` | ``false``                         |
++---------------------------------------+------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`             | :ref:`follow_viewport_scale<class_CanvasLayer_property_follow_viewport_scale>`     | ``1.0``                           |
++---------------------------------------+------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`int<class_int>`                 | :ref:`layer<class_CanvasLayer_property_layer>`                                     | ``1``                             |
++---------------------------------------+------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`Vector2<class_Vector2>`         | :ref:`offset<class_CanvasLayer_property_offset>`                                   | ``Vector2(0, 0)``                 |
++---------------------------------------+------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`             | :ref:`rotation<class_CanvasLayer_property_rotation>`                               | ``0.0``                           |
++---------------------------------------+------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`Vector2<class_Vector2>`         | :ref:`scale<class_CanvasLayer_property_scale>`                                     | ``Vector2(1, 1)``                 |
++---------------------------------------+------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`Transform2D<class_Transform2D>` | :ref:`transform<class_CanvasLayer_property_transform>`                             | ``Transform2D(1, 0, 0, 1, 0, 0)`` |
++---------------------------------------+------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`bool<class_bool>`               | :ref:`visible<class_CanvasLayer_property_visible>`                                 | ``true``                          |
++---------------------------------------+------------------------------------------------------------------------------------+-----------------------------------+
 
 Methods
 -------
@@ -90,9 +90,9 @@ The custom :ref:`Viewport<class_Viewport>` node assigned to the ``CanvasLayer``.
 
 ----
 
-.. _class_CanvasLayer_property_follow_viewport_enable:
+.. _class_CanvasLayer_property_follow_viewport_enabled:
 
-- :ref:`bool<class_bool>` **follow_viewport_enable**
+- :ref:`bool<class_bool>` **follow_viewport_enabled**
 
 +-----------+----------------------------+
 | *Default* | ``false``                  |
@@ -118,7 +118,7 @@ Sets the layer to follow the viewport in order to simulate a pseudo 3D effect.
 | *Getter*  | get_follow_viewport_scale()      |
 +-----------+----------------------------------+
 
-Scales the layer when using :ref:`follow_viewport_enable<class_CanvasLayer_property_follow_viewport_enable>`. Layers moving into the foreground should have increasing scales, while layers moving into the background should have decreasing scales.
+Scales the layer when using :ref:`follow_viewport_enabled<class_CanvasLayer_property_follow_viewport_enabled>`. Layers moving into the foreground should have increasing scales, while layers moving into the background should have decreasing scales.
 
 ----
 

+ 91 - 91
classes/class_characterbody2d.rst

@@ -37,37 +37,37 @@ Tutorials
 Properties
 ----------
 
-+----------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+--------------------+
-| :ref:`float<class_float>`                                                                          | :ref:`collision/safe_margin<class_CharacterBody2D_property_collision/safe_margin>`                                     | ``0.08``           |
-+----------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+--------------------+
-| :ref:`bool<class_bool>`                                                                            | :ref:`floor_block_on_wall<class_CharacterBody2D_property_floor_block_on_wall>`                                         | ``true``           |
-+----------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+--------------------+
-| :ref:`bool<class_bool>`                                                                            | :ref:`floor_constant_speed<class_CharacterBody2D_property_floor_constant_speed>`                                       | ``false``          |
-+----------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+--------------------+
-| :ref:`float<class_float>`                                                                          | :ref:`floor_max_angle<class_CharacterBody2D_property_floor_max_angle>`                                                 | ``0.785398``       |
-+----------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+--------------------+
-| :ref:`float<class_float>`                                                                          | :ref:`floor_snap_length<class_CharacterBody2D_property_floor_snap_length>`                                             | ``1.0``            |
-+----------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+--------------------+
-| :ref:`bool<class_bool>`                                                                            | :ref:`floor_stop_on_slope<class_CharacterBody2D_property_floor_stop_on_slope>`                                         | ``true``           |
-+----------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+--------------------+
-| :ref:`int<class_int>`                                                                              | :ref:`max_slides<class_CharacterBody2D_property_max_slides>`                                                           | ``4``              |
-+----------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+--------------------+
-| :ref:`MotionMode<enum_CharacterBody2D_MotionMode>`                                                 | :ref:`motion_mode<class_CharacterBody2D_property_motion_mode>`                                                         | ``0``              |
-+----------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+--------------------+
-| :ref:`MovingPlatformApplyVelocityOnLeave<enum_CharacterBody2D_MovingPlatformApplyVelocityOnLeave>` | :ref:`moving_platform_apply_velocity_on_leave<class_CharacterBody2D_property_moving_platform_apply_velocity_on_leave>` | ``0``              |
-+----------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+--------------------+
-| :ref:`int<class_int>`                                                                              | :ref:`moving_platform_floor_layers<class_CharacterBody2D_property_moving_platform_floor_layers>`                       | ``4294967295``     |
-+----------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+--------------------+
-| :ref:`int<class_int>`                                                                              | :ref:`moving_platform_wall_layers<class_CharacterBody2D_property_moving_platform_wall_layers>`                         | ``0``              |
-+----------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+--------------------+
-| :ref:`bool<class_bool>`                                                                            | :ref:`slide_on_ceiling<class_CharacterBody2D_property_slide_on_ceiling>`                                               | ``true``           |
-+----------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+--------------------+
-| :ref:`Vector2<class_Vector2>`                                                                      | :ref:`up_direction<class_CharacterBody2D_property_up_direction>`                                                       | ``Vector2(0, -1)`` |
-+----------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+--------------------+
-| :ref:`Vector2<class_Vector2>`                                                                      | :ref:`velocity<class_CharacterBody2D_property_velocity>`                                                               | ``Vector2(0, 0)``  |
-+----------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+--------------------+
-| :ref:`float<class_float>`                                                                          | :ref:`wall_min_slide_angle<class_CharacterBody2D_property_wall_min_slide_angle>`                                       | ``0.261799``       |
-+----------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+--------------------+
++--------------------------------------------------------------+------------------------------------------------------------------------------------+--------------------+
+| :ref:`bool<class_bool>`                                      | :ref:`floor_block_on_wall<class_CharacterBody2D_property_floor_block_on_wall>`     | ``true``           |
++--------------------------------------------------------------+------------------------------------------------------------------------------------+--------------------+
+| :ref:`bool<class_bool>`                                      | :ref:`floor_constant_speed<class_CharacterBody2D_property_floor_constant_speed>`   | ``false``          |
++--------------------------------------------------------------+------------------------------------------------------------------------------------+--------------------+
+| :ref:`float<class_float>`                                    | :ref:`floor_max_angle<class_CharacterBody2D_property_floor_max_angle>`             | ``0.785398``       |
++--------------------------------------------------------------+------------------------------------------------------------------------------------+--------------------+
+| :ref:`float<class_float>`                                    | :ref:`floor_snap_length<class_CharacterBody2D_property_floor_snap_length>`         | ``1.0``            |
++--------------------------------------------------------------+------------------------------------------------------------------------------------+--------------------+
+| :ref:`bool<class_bool>`                                      | :ref:`floor_stop_on_slope<class_CharacterBody2D_property_floor_stop_on_slope>`     | ``true``           |
++--------------------------------------------------------------+------------------------------------------------------------------------------------+--------------------+
+| :ref:`int<class_int>`                                        | :ref:`max_slides<class_CharacterBody2D_property_max_slides>`                       | ``4``              |
++--------------------------------------------------------------+------------------------------------------------------------------------------------+--------------------+
+| :ref:`MotionMode<enum_CharacterBody2D_MotionMode>`           | :ref:`motion_mode<class_CharacterBody2D_property_motion_mode>`                     | ``0``              |
++--------------------------------------------------------------+------------------------------------------------------------------------------------+--------------------+
+| :ref:`int<class_int>`                                        | :ref:`platform_floor_layers<class_CharacterBody2D_property_platform_floor_layers>` | ``4294967295``     |
++--------------------------------------------------------------+------------------------------------------------------------------------------------+--------------------+
+| :ref:`PlatformOnLeave<enum_CharacterBody2D_PlatformOnLeave>` | :ref:`platform_on_leave<class_CharacterBody2D_property_platform_on_leave>`         | ``0``              |
++--------------------------------------------------------------+------------------------------------------------------------------------------------+--------------------+
+| :ref:`int<class_int>`                                        | :ref:`platform_wall_layers<class_CharacterBody2D_property_platform_wall_layers>`   | ``0``              |
++--------------------------------------------------------------+------------------------------------------------------------------------------------+--------------------+
+| :ref:`float<class_float>`                                    | :ref:`safe_margin<class_CharacterBody2D_property_safe_margin>`                     | ``0.08``           |
++--------------------------------------------------------------+------------------------------------------------------------------------------------+--------------------+
+| :ref:`bool<class_bool>`                                      | :ref:`slide_on_ceiling<class_CharacterBody2D_property_slide_on_ceiling>`           | ``true``           |
++--------------------------------------------------------------+------------------------------------------------------------------------------------+--------------------+
+| :ref:`Vector2<class_Vector2>`                                | :ref:`up_direction<class_CharacterBody2D_property_up_direction>`                   | ``Vector2(0, -1)`` |
++--------------------------------------------------------------+------------------------------------------------------------------------------------+--------------------+
+| :ref:`Vector2<class_Vector2>`                                | :ref:`velocity<class_CharacterBody2D_property_velocity>`                           | ``Vector2(0, 0)``  |
++--------------------------------------------------------------+------------------------------------------------------------------------------------+--------------------+
+| :ref:`float<class_float>`                                    | :ref:`wall_min_slide_angle<class_CharacterBody2D_property_wall_min_slide_angle>`   | ``0.261799``       |
++--------------------------------------------------------------+------------------------------------------------------------------------------------+--------------------+
 
 Methods
 -------
@@ -125,47 +125,25 @@ enum **MotionMode**:
 
 ----
 
-.. _enum_CharacterBody2D_MovingPlatformApplyVelocityOnLeave:
+.. _enum_CharacterBody2D_PlatformOnLeave:
 
-.. _class_CharacterBody2D_constant_PLATFORM_VEL_ON_LEAVE_ALWAYS:
+.. _class_CharacterBody2D_constant_PLATFORM_ON_LEAVE_ADD_VELOCITY:
 
-.. _class_CharacterBody2D_constant_PLATFORM_VEL_ON_LEAVE_UPWARD_ONLY:
+.. _class_CharacterBody2D_constant_PLATFORM_ON_LEAVE_ADD_UPWARD_VELOCITY:
 
-.. _class_CharacterBody2D_constant_PLATFORM_VEL_ON_LEAVE_NEVER:
+.. _class_CharacterBody2D_constant_PLATFORM_ON_LEAVE_DO_NOTHING:
 
-enum **MovingPlatformApplyVelocityOnLeave**:
+enum **PlatformOnLeave**:
 
-- **PLATFORM_VEL_ON_LEAVE_ALWAYS** = **0** --- Add the last platform velocity to the :ref:`velocity<class_CharacterBody2D_property_velocity>` when you leave a moving platform.
+- **PLATFORM_ON_LEAVE_ADD_VELOCITY** = **0** --- Add the last platform velocity to the :ref:`velocity<class_CharacterBody2D_property_velocity>` when you leave a moving platform.
 
-- **PLATFORM_VEL_ON_LEAVE_UPWARD_ONLY** = **1** --- Add the last platform velocity to the :ref:`velocity<class_CharacterBody2D_property_velocity>` when you leave a moving platform, but any downward motion is ignored. It's useful to keep full jump height even when the platform is moving down.
+- **PLATFORM_ON_LEAVE_ADD_UPWARD_VELOCITY** = **1** --- Add the last platform velocity to the :ref:`velocity<class_CharacterBody2D_property_velocity>` when you leave a moving platform, but any downward motion is ignored. It's useful to keep full jump height even when the platform is moving down.
 
-- **PLATFORM_VEL_ON_LEAVE_NEVER** = **2** --- Do nothing when leaving a platform.
+- **PLATFORM_ON_LEAVE_DO_NOTHING** = **2** --- Do nothing when leaving a platform.
 
 Property Descriptions
 ---------------------
 
-.. _class_CharacterBody2D_property_collision/safe_margin:
-
-- :ref:`float<class_float>` **collision/safe_margin**
-
-+-----------+------------------------+
-| *Default* | ``0.08``               |
-+-----------+------------------------+
-| *Setter*  | set_safe_margin(value) |
-+-----------+------------------------+
-| *Getter*  | get_safe_margin()      |
-+-----------+------------------------+
-
-Extra margin used for collision recovery when calling :ref:`move_and_slide<class_CharacterBody2D_method_move_and_slide>`.
-
-If the body is at least this close to another body, it will consider them to be colliding and will be pushed away before performing the actual motion.
-
-A higher value means it's more flexible for detecting collision, which helps with consistently detecting walls and floors.
-
-A lower value forces the collision algorithm to use more exact detection, so it can be used in cases that specifically require precision, e.g at very low scale to avoid visible jittering, or for stability with a stack of character bodies.
-
-----
-
 .. _class_CharacterBody2D_property_floor_block_on_wall:
 
 - :ref:`bool<class_bool>` **floor_block_on_wall**
@@ -284,54 +262,76 @@ Sets the motion mode which defines the behavior of :ref:`move_and_slide<class_Ch
 
 ----
 
-.. _class_CharacterBody2D_property_moving_platform_apply_velocity_on_leave:
+.. _class_CharacterBody2D_property_platform_floor_layers:
 
-- :ref:`MovingPlatformApplyVelocityOnLeave<enum_CharacterBody2D_MovingPlatformApplyVelocityOnLeave>` **moving_platform_apply_velocity_on_leave**
+- :ref:`int<class_int>` **platform_floor_layers**
 
-+-----------+----------------------------------------------------+
-| *Default* | ``0``                                              |
-+-----------+----------------------------------------------------+
-| *Setter*  | set_moving_platform_apply_velocity_on_leave(value) |
-+-----------+----------------------------------------------------+
-| *Getter*  | get_moving_platform_apply_velocity_on_leave()      |
-+-----------+----------------------------------------------------+
++-----------+----------------------------------+
+| *Default* | ``4294967295``                   |
++-----------+----------------------------------+
+| *Setter*  | set_platform_floor_layers(value) |
++-----------+----------------------------------+
+| *Getter*  | get_platform_floor_layers()      |
++-----------+----------------------------------+
 
-Sets the behavior to apply when you leave a moving platform. By default, to be physically accurate, when you leave the last platform velocity is applied. See :ref:`MovingPlatformApplyVelocityOnLeave<enum_CharacterBody2D_MovingPlatformApplyVelocityOnLeave>` constants for available behavior.
+Collision layers that will be included for detecting floor bodies that will act as moving platforms to be followed by the ``CharacterBody2D``. By default, all floor bodies are detected and propagate their velocity.
 
 ----
 
-.. _class_CharacterBody2D_property_moving_platform_floor_layers:
+.. _class_CharacterBody2D_property_platform_on_leave:
 
-- :ref:`int<class_int>` **moving_platform_floor_layers**
+- :ref:`PlatformOnLeave<enum_CharacterBody2D_PlatformOnLeave>` **platform_on_leave**
 
-+-----------+-----------------------------------------+
-| *Default* | ``4294967295``                          |
-+-----------+-----------------------------------------+
-| *Setter*  | set_moving_platform_floor_layers(value) |
-+-----------+-----------------------------------------+
-| *Getter*  | get_moving_platform_floor_layers()      |
-+-----------+-----------------------------------------+
++-----------+------------------------------+
+| *Default* | ``0``                        |
++-----------+------------------------------+
+| *Setter*  | set_platform_on_leave(value) |
++-----------+------------------------------+
+| *Getter*  | get_platform_on_leave()      |
++-----------+------------------------------+
 
-Collision layers that will be included for detecting floor bodies that will act as moving platforms to be followed by the ``CharacterBody2D``. By default, all floor bodies are detected and propagate their velocity.
+Sets the behavior to apply when you leave a moving platform. By default, to be physically accurate, when you leave the last platform velocity is applied. See :ref:`PlatformOnLeave<enum_CharacterBody2D_PlatformOnLeave>` constants for available behavior.
 
 ----
 
-.. _class_CharacterBody2D_property_moving_platform_wall_layers:
+.. _class_CharacterBody2D_property_platform_wall_layers:
 
-- :ref:`int<class_int>` **moving_platform_wall_layers**
+- :ref:`int<class_int>` **platform_wall_layers**
 
-+-----------+----------------------------------------+
-| *Default* | ``0``                                  |
-+-----------+----------------------------------------+
-| *Setter*  | set_moving_platform_wall_layers(value) |
-+-----------+----------------------------------------+
-| *Getter*  | get_moving_platform_wall_layers()      |
-+-----------+----------------------------------------+
++-----------+---------------------------------+
+| *Default* | ``0``                           |
++-----------+---------------------------------+
+| *Setter*  | set_platform_wall_layers(value) |
++-----------+---------------------------------+
+| *Getter*  | get_platform_wall_layers()      |
++-----------+---------------------------------+
 
 Collision layers that will be included for detecting wall bodies that will act as moving platforms to be followed by the ``CharacterBody2D``. By default, all wall bodies are ignored.
 
 ----
 
+.. _class_CharacterBody2D_property_safe_margin:
+
+- :ref:`float<class_float>` **safe_margin**
+
++-----------+------------------------+
+| *Default* | ``0.08``               |
++-----------+------------------------+
+| *Setter*  | set_safe_margin(value) |
++-----------+------------------------+
+| *Getter*  | get_safe_margin()      |
++-----------+------------------------+
+
+Extra margin used for collision recovery when calling :ref:`move_and_slide<class_CharacterBody2D_method_move_and_slide>`.
+
+If the body is at least this close to another body, it will consider them to be colliding and will be pushed away before performing the actual motion.
+
+A higher value means it's more flexible for detecting collision, which helps with consistently detecting walls and floors.
+
+A lower value forces the collision algorithm to use more exact detection, so it can be used in cases that specifically require precision, e.g at very low scale to avoid visible jittering, or for stability with a stack of character bodies.
+
+----
+
 .. _class_CharacterBody2D_property_slide_on_ceiling:
 
 - :ref:`bool<class_bool>` **slide_on_ceiling**
@@ -550,7 +550,7 @@ Returns ``true`` if the body collided only with a wall on the last call of :ref:
 
 - :ref:`bool<class_bool>` **move_and_slide** **(** **)**
 
-Moves the body based on :ref:`velocity<class_CharacterBody2D_property_velocity>`. If the body collides with another, it will slide along the other body (by default only on floor) rather than stop immediately. If the other body is a ``CharacterBody2D`` or :ref:`RigidDynamicBody2D<class_RigidDynamicBody2D>`, it will also be affected by the motion of the other body. You can use this to make moving and rotating platforms, or to make nodes push other nodes.
+Moves the body based on :ref:`velocity<class_CharacterBody2D_property_velocity>`. If the body collides with another, it will slide along the other body (by default only on floor) rather than stop immediately. If the other body is a ``CharacterBody2D`` or :ref:`RigidBody2D<class_RigidBody2D>`, it will also be affected by the motion of the other body. You can use this to make moving and rotating platforms, or to make nodes push other nodes.
 
 Modifies :ref:`velocity<class_CharacterBody2D_property_velocity>` if a slide collision occurred. To get the latest collision call :ref:`get_last_slide_collision<class_CharacterBody2D_method_get_last_slide_collision>`, for detailed information about collisions that occurred, use :ref:`get_slide_collision<class_CharacterBody2D_method_get_slide_collision>`.
 

+ 92 - 92
classes/class_characterbody3d.rst

@@ -39,37 +39,37 @@ Tutorials
 Properties
 ----------
 
-+----------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+----------------------+
-| :ref:`float<class_float>`                                                                          | :ref:`collision/safe_margin<class_CharacterBody3D_property_collision/safe_margin>`                                     | ``0.001``            |
-+----------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+----------------------+
-| :ref:`bool<class_bool>`                                                                            | :ref:`floor_block_on_wall<class_CharacterBody3D_property_floor_block_on_wall>`                                         | ``true``             |
-+----------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+----------------------+
-| :ref:`bool<class_bool>`                                                                            | :ref:`floor_constant_speed<class_CharacterBody3D_property_floor_constant_speed>`                                       | ``false``            |
-+----------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+----------------------+
-| :ref:`float<class_float>`                                                                          | :ref:`floor_max_angle<class_CharacterBody3D_property_floor_max_angle>`                                                 | ``0.785398``         |
-+----------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+----------------------+
-| :ref:`float<class_float>`                                                                          | :ref:`floor_snap_length<class_CharacterBody3D_property_floor_snap_length>`                                             | ``0.1``              |
-+----------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+----------------------+
-| :ref:`bool<class_bool>`                                                                            | :ref:`floor_stop_on_slope<class_CharacterBody3D_property_floor_stop_on_slope>`                                         | ``true``             |
-+----------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+----------------------+
-| :ref:`int<class_int>`                                                                              | :ref:`max_slides<class_CharacterBody3D_property_max_slides>`                                                           | ``6``                |
-+----------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+----------------------+
-| :ref:`MotionMode<enum_CharacterBody3D_MotionMode>`                                                 | :ref:`motion_mode<class_CharacterBody3D_property_motion_mode>`                                                         | ``0``                |
-+----------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+----------------------+
-| :ref:`MovingPlatformApplyVelocityOnLeave<enum_CharacterBody3D_MovingPlatformApplyVelocityOnLeave>` | :ref:`moving_platform_apply_velocity_on_leave<class_CharacterBody3D_property_moving_platform_apply_velocity_on_leave>` | ``0``                |
-+----------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+----------------------+
-| :ref:`int<class_int>`                                                                              | :ref:`moving_platform_floor_layers<class_CharacterBody3D_property_moving_platform_floor_layers>`                       | ``4294967295``       |
-+----------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+----------------------+
-| :ref:`int<class_int>`                                                                              | :ref:`moving_platform_wall_layers<class_CharacterBody3D_property_moving_platform_wall_layers>`                         | ``0``                |
-+----------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+----------------------+
-| :ref:`bool<class_bool>`                                                                            | :ref:`slide_on_ceiling<class_CharacterBody3D_property_slide_on_ceiling>`                                               | ``true``             |
-+----------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+----------------------+
-| :ref:`Vector3<class_Vector3>`                                                                      | :ref:`up_direction<class_CharacterBody3D_property_up_direction>`                                                       | ``Vector3(0, 1, 0)`` |
-+----------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+----------------------+
-| :ref:`Vector3<class_Vector3>`                                                                      | :ref:`velocity<class_CharacterBody3D_property_velocity>`                                                               | ``Vector3(0, 0, 0)`` |
-+----------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+----------------------+
-| :ref:`float<class_float>`                                                                          | :ref:`wall_min_slide_angle<class_CharacterBody3D_property_wall_min_slide_angle>`                                       | ``0.261799``         |
-+----------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+----------------------+
++--------------------------------------------------------------+------------------------------------------------------------------------------------+----------------------+
+| :ref:`bool<class_bool>`                                      | :ref:`floor_block_on_wall<class_CharacterBody3D_property_floor_block_on_wall>`     | ``true``             |
++--------------------------------------------------------------+------------------------------------------------------------------------------------+----------------------+
+| :ref:`bool<class_bool>`                                      | :ref:`floor_constant_speed<class_CharacterBody3D_property_floor_constant_speed>`   | ``false``            |
++--------------------------------------------------------------+------------------------------------------------------------------------------------+----------------------+
+| :ref:`float<class_float>`                                    | :ref:`floor_max_angle<class_CharacterBody3D_property_floor_max_angle>`             | ``0.785398``         |
++--------------------------------------------------------------+------------------------------------------------------------------------------------+----------------------+
+| :ref:`float<class_float>`                                    | :ref:`floor_snap_length<class_CharacterBody3D_property_floor_snap_length>`         | ``0.1``              |
++--------------------------------------------------------------+------------------------------------------------------------------------------------+----------------------+
+| :ref:`bool<class_bool>`                                      | :ref:`floor_stop_on_slope<class_CharacterBody3D_property_floor_stop_on_slope>`     | ``true``             |
++--------------------------------------------------------------+------------------------------------------------------------------------------------+----------------------+
+| :ref:`int<class_int>`                                        | :ref:`max_slides<class_CharacterBody3D_property_max_slides>`                       | ``6``                |
++--------------------------------------------------------------+------------------------------------------------------------------------------------+----------------------+
+| :ref:`MotionMode<enum_CharacterBody3D_MotionMode>`           | :ref:`motion_mode<class_CharacterBody3D_property_motion_mode>`                     | ``0``                |
++--------------------------------------------------------------+------------------------------------------------------------------------------------+----------------------+
+| :ref:`int<class_int>`                                        | :ref:`platform_floor_layers<class_CharacterBody3D_property_platform_floor_layers>` | ``4294967295``       |
++--------------------------------------------------------------+------------------------------------------------------------------------------------+----------------------+
+| :ref:`PlatformOnLeave<enum_CharacterBody3D_PlatformOnLeave>` | :ref:`platform_on_leave<class_CharacterBody3D_property_platform_on_leave>`         | ``0``                |
++--------------------------------------------------------------+------------------------------------------------------------------------------------+----------------------+
+| :ref:`int<class_int>`                                        | :ref:`platform_wall_layers<class_CharacterBody3D_property_platform_wall_layers>`   | ``0``                |
++--------------------------------------------------------------+------------------------------------------------------------------------------------+----------------------+
+| :ref:`float<class_float>`                                    | :ref:`safe_margin<class_CharacterBody3D_property_safe_margin>`                     | ``0.001``            |
++--------------------------------------------------------------+------------------------------------------------------------------------------------+----------------------+
+| :ref:`bool<class_bool>`                                      | :ref:`slide_on_ceiling<class_CharacterBody3D_property_slide_on_ceiling>`           | ``true``             |
++--------------------------------------------------------------+------------------------------------------------------------------------------------+----------------------+
+| :ref:`Vector3<class_Vector3>`                                | :ref:`up_direction<class_CharacterBody3D_property_up_direction>`                   | ``Vector3(0, 1, 0)`` |
++--------------------------------------------------------------+------------------------------------------------------------------------------------+----------------------+
+| :ref:`Vector3<class_Vector3>`                                | :ref:`velocity<class_CharacterBody3D_property_velocity>`                           | ``Vector3(0, 0, 0)`` |
++--------------------------------------------------------------+------------------------------------------------------------------------------------+----------------------+
+| :ref:`float<class_float>`                                    | :ref:`wall_min_slide_angle<class_CharacterBody3D_property_wall_min_slide_angle>`   | ``0.261799``         |
++--------------------------------------------------------------+------------------------------------------------------------------------------------+----------------------+
 
 Methods
 -------
@@ -127,47 +127,25 @@ enum **MotionMode**:
 
 ----
 
-.. _enum_CharacterBody3D_MovingPlatformApplyVelocityOnLeave:
+.. _enum_CharacterBody3D_PlatformOnLeave:
 
-.. _class_CharacterBody3D_constant_PLATFORM_VEL_ON_LEAVE_ALWAYS:
+.. _class_CharacterBody3D_constant_PLATFORM_ON_LEAVE_ADD_VELOCITY:
 
-.. _class_CharacterBody3D_constant_PLATFORM_VEL_ON_LEAVE_UPWARD_ONLY:
+.. _class_CharacterBody3D_constant_PLATFORM_ON_LEAVE_ADD_UPWARD_VELOCITY:
 
-.. _class_CharacterBody3D_constant_PLATFORM_VEL_ON_LEAVE_NEVER:
+.. _class_CharacterBody3D_constant_PLATFORM_ON_LEAVE_DO_NOTHING:
 
-enum **MovingPlatformApplyVelocityOnLeave**:
+enum **PlatformOnLeave**:
 
-- **PLATFORM_VEL_ON_LEAVE_ALWAYS** = **0** --- Add the last platform velocity to the :ref:`velocity<class_CharacterBody3D_property_velocity>` when you leave a moving platform.
+- **PLATFORM_ON_LEAVE_ADD_VELOCITY** = **0** --- Add the last platform velocity to the :ref:`velocity<class_CharacterBody3D_property_velocity>` when you leave a moving platform.
 
-- **PLATFORM_VEL_ON_LEAVE_UPWARD_ONLY** = **1** --- Add the last platform velocity to the :ref:`velocity<class_CharacterBody3D_property_velocity>` when you leave a moving platform, but any downward motion is ignored. It's useful to keep full jump height even when the platform is moving down.
+- **PLATFORM_ON_LEAVE_ADD_UPWARD_VELOCITY** = **1** --- Add the last platform velocity to the :ref:`velocity<class_CharacterBody3D_property_velocity>` when you leave a moving platform, but any downward motion is ignored. It's useful to keep full jump height even when the platform is moving down.
 
-- **PLATFORM_VEL_ON_LEAVE_NEVER** = **2** --- Do nothing when leaving a platform.
+- **PLATFORM_ON_LEAVE_DO_NOTHING** = **2** --- Do nothing when leaving a platform.
 
 Property Descriptions
 ---------------------
 
-.. _class_CharacterBody3D_property_collision/safe_margin:
-
-- :ref:`float<class_float>` **collision/safe_margin**
-
-+-----------+------------------------+
-| *Default* | ``0.001``              |
-+-----------+------------------------+
-| *Setter*  | set_safe_margin(value) |
-+-----------+------------------------+
-| *Getter*  | get_safe_margin()      |
-+-----------+------------------------+
-
-Extra margin used for collision recovery when calling :ref:`move_and_slide<class_CharacterBody3D_method_move_and_slide>`.
-
-If the body is at least this close to another body, it will consider them to be colliding and will be pushed away before performing the actual motion.
-
-A higher value means it's more flexible for detecting collision, which helps with consistently detecting walls and floors.
-
-A lower value forces the collision algorithm to use more exact detection, so it can be used in cases that specifically require precision, e.g at very low scale to avoid visible jittering, or for stability with a stack of character bodies.
-
-----
-
 .. _class_CharacterBody3D_property_floor_block_on_wall:
 
 - :ref:`bool<class_bool>` **floor_block_on_wall**
@@ -286,51 +264,73 @@ Sets the motion mode which defines the behavior of :ref:`move_and_slide<class_Ch
 
 ----
 
-.. _class_CharacterBody3D_property_moving_platform_apply_velocity_on_leave:
+.. _class_CharacterBody3D_property_platform_floor_layers:
 
-- :ref:`MovingPlatformApplyVelocityOnLeave<enum_CharacterBody3D_MovingPlatformApplyVelocityOnLeave>` **moving_platform_apply_velocity_on_leave**
+- :ref:`int<class_int>` **platform_floor_layers**
 
-+-----------+----------------------------------------------------+
-| *Default* | ``0``                                              |
-+-----------+----------------------------------------------------+
-| *Setter*  | set_moving_platform_apply_velocity_on_leave(value) |
-+-----------+----------------------------------------------------+
-| *Getter*  | get_moving_platform_apply_velocity_on_leave()      |
-+-----------+----------------------------------------------------+
++-----------+----------------------------------+
+| *Default* | ``4294967295``                   |
++-----------+----------------------------------+
+| *Setter*  | set_platform_floor_layers(value) |
++-----------+----------------------------------+
+| *Getter*  | get_platform_floor_layers()      |
++-----------+----------------------------------+
 
-Sets the behavior to apply when you leave a moving platform. By default, to be physically accurate, when you leave the last platform velocity is applied. See :ref:`MovingPlatformApplyVelocityOnLeave<enum_CharacterBody3D_MovingPlatformApplyVelocityOnLeave>` constants for available behavior.
+Collision layers that will be included for detecting floor bodies that will act as moving platforms to be followed by the ``CharacterBody3D``. By default, all floor bodies are detected and propagate their velocity.
 
 ----
 
-.. _class_CharacterBody3D_property_moving_platform_floor_layers:
+.. _class_CharacterBody3D_property_platform_on_leave:
 
-- :ref:`int<class_int>` **moving_platform_floor_layers**
+- :ref:`PlatformOnLeave<enum_CharacterBody3D_PlatformOnLeave>` **platform_on_leave**
 
-+-----------+-----------------------------------------+
-| *Default* | ``4294967295``                          |
-+-----------+-----------------------------------------+
-| *Setter*  | set_moving_platform_floor_layers(value) |
-+-----------+-----------------------------------------+
-| *Getter*  | get_moving_platform_floor_layers()      |
-+-----------+-----------------------------------------+
++-----------+------------------------------+
+| *Default* | ``0``                        |
++-----------+------------------------------+
+| *Setter*  | set_platform_on_leave(value) |
++-----------+------------------------------+
+| *Getter*  | get_platform_on_leave()      |
++-----------+------------------------------+
 
-Collision layers that will be included for detecting floor bodies that will act as moving platforms to be followed by the :ref:`CharacterBody2D<class_CharacterBody2D>`. By default, all floor bodies are detected and propagate their velocity.
+Sets the behavior to apply when you leave a moving platform. By default, to be physically accurate, when you leave the last platform velocity is applied. See :ref:`PlatformOnLeave<enum_CharacterBody3D_PlatformOnLeave>` constants for available behavior.
 
 ----
 
-.. _class_CharacterBody3D_property_moving_platform_wall_layers:
+.. _class_CharacterBody3D_property_platform_wall_layers:
 
-- :ref:`int<class_int>` **moving_platform_wall_layers**
+- :ref:`int<class_int>` **platform_wall_layers**
 
-+-----------+----------------------------------------+
-| *Default* | ``0``                                  |
-+-----------+----------------------------------------+
-| *Setter*  | set_moving_platform_wall_layers(value) |
-+-----------+----------------------------------------+
-| *Getter*  | get_moving_platform_wall_layers()      |
-+-----------+----------------------------------------+
++-----------+---------------------------------+
+| *Default* | ``0``                           |
++-----------+---------------------------------+
+| *Setter*  | set_platform_wall_layers(value) |
++-----------+---------------------------------+
+| *Getter*  | get_platform_wall_layers()      |
++-----------+---------------------------------+
+
+Collision layers that will be included for detecting wall bodies that will act as moving platforms to be followed by the ``CharacterBody3D``. By default, all wall bodies are ignored.
+
+----
+
+.. _class_CharacterBody3D_property_safe_margin:
+
+- :ref:`float<class_float>` **safe_margin**
+
++-----------+------------------------+
+| *Default* | ``0.001``              |
++-----------+------------------------+
+| *Setter*  | set_safe_margin(value) |
++-----------+------------------------+
+| *Getter*  | get_safe_margin()      |
++-----------+------------------------+
 
-Collision layers that will be included for detecting wall bodies that will act as moving platforms to be followed by the :ref:`CharacterBody2D<class_CharacterBody2D>`. By default, all wall bodies are ignored.
+Extra margin used for collision recovery when calling :ref:`move_and_slide<class_CharacterBody3D_method_move_and_slide>`.
+
+If the body is at least this close to another body, it will consider them to be colliding and will be pushed away before performing the actual motion.
+
+A higher value means it's more flexible for detecting collision, which helps with consistently detecting walls and floors.
+
+A lower value forces the collision algorithm to use more exact detection, so it can be used in cases that specifically require precision, e.g at very low scale to avoid visible jittering, or for stability with a stack of character bodies.
 
 ----
 
@@ -531,7 +531,7 @@ Returns ``true`` if the body collided only with a wall on the last call of :ref:
 
 - :ref:`bool<class_bool>` **move_and_slide** **(** **)**
 
-Moves the body based on :ref:`velocity<class_CharacterBody3D_property_velocity>`. If the body collides with another, it will slide along the other body rather than stop immediately. If the other body is a ``CharacterBody3D`` or :ref:`RigidDynamicBody3D<class_RigidDynamicBody3D>`, it will also be affected by the motion of the other body. You can use this to make moving and rotating platforms, or to make nodes push other nodes.
+Moves the body based on :ref:`velocity<class_CharacterBody3D_property_velocity>`. If the body collides with another, it will slide along the other body rather than stop immediately. If the other body is a ``CharacterBody3D`` or :ref:`RigidBody3D<class_RigidBody3D>`, it will also be affected by the motion of the other body. You can use this to make moving and rotating platforms, or to make nodes push other nodes.
 
 Modifies :ref:`velocity<class_CharacterBody3D_property_velocity>` if a slide collision occurred. To get the latest collision call :ref:`get_last_slide_collision<class_CharacterBody3D_method_get_last_slide_collision>`, for more detailed information about collisions that occurred, use :ref:`get_slide_collision<class_CharacterBody3D_method_get_slide_collision>`.
 

+ 1 - 1
classes/class_checkbox.rst

@@ -194,7 +194,7 @@ The vertical offset used when rendering the check icons (in pixels).
 | *Default* | ``4`` |
 +-----------+-------+
 
-The separation between the check icon and the text (in pixels).
+The separation between the check icon and the text (in pixels). Negative values will be treated as ``0`` when used.
 
 ----
 

+ 1 - 1
classes/class_checkbutton.rst

@@ -194,7 +194,7 @@ The vertical offset used when rendering the toggle icons (in pixels).
 | *Default* | ``4`` |
 +-----------+-------+
 
-The separation between the toggle icon and the text (in pixels).
+The separation between the toggle icon and the text (in pixels). Negative values will be treated as ``0`` when used.
 
 ----
 

+ 8 - 8
classes/class_classdb.rst

@@ -37,15 +37,15 @@ Methods
 +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`class_get_integer_constant_list<class_ClassDB_method_class_get_integer_constant_list>` **(** :ref:`StringName<class_StringName>` class, :ref:`bool<class_bool>` no_inheritance=false **)** |const|                                           |
 +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                         | :ref:`class_get_method_list<class_ClassDB_method_class_get_method_list>` **(** :ref:`StringName<class_StringName>` class, :ref:`bool<class_bool>` no_inheritance=false **)** |const|                                                               |
+| :ref:`Dictionary[]<class_Dictionary>`             | :ref:`class_get_method_list<class_ClassDB_method_class_get_method_list>` **(** :ref:`StringName<class_StringName>` class, :ref:`bool<class_bool>` no_inheritance=false **)** |const|                                                               |
 +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Variant<class_Variant>`                     | :ref:`class_get_property<class_ClassDB_method_class_get_property>` **(** :ref:`Object<class_Object>` object, :ref:`StringName<class_StringName>` property **)** |const|                                                                            |
 +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                         | :ref:`class_get_property_list<class_ClassDB_method_class_get_property_list>` **(** :ref:`StringName<class_StringName>` class, :ref:`bool<class_bool>` no_inheritance=false **)** |const|                                                           |
+| :ref:`Dictionary[]<class_Dictionary>`             | :ref:`class_get_property_list<class_ClassDB_method_class_get_property_list>` **(** :ref:`StringName<class_StringName>` class, :ref:`bool<class_bool>` no_inheritance=false **)** |const|                                                           |
 +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Dictionary<class_Dictionary>`               | :ref:`class_get_signal<class_ClassDB_method_class_get_signal>` **(** :ref:`StringName<class_StringName>` class, :ref:`StringName<class_StringName>` signal **)** |const|                                                                           |
 +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                         | :ref:`class_get_signal_list<class_ClassDB_method_class_get_signal_list>` **(** :ref:`StringName<class_StringName>` class, :ref:`bool<class_bool>` no_inheritance=false **)** |const|                                                               |
+| :ref:`Dictionary[]<class_Dictionary>`             | :ref:`class_get_signal_list<class_ClassDB_method_class_get_signal_list>` **(** :ref:`StringName<class_StringName>` class, :ref:`bool<class_bool>` no_inheritance=false **)** |const|                                                               |
 +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                           | :ref:`class_has_enum<class_ClassDB_method_class_has_enum>` **(** :ref:`StringName<class_StringName>` class, :ref:`StringName<class_StringName>` name, :ref:`bool<class_bool>` no_inheritance=false **)** |const|                                   |
 +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -131,7 +131,7 @@ Returns an array with the names all the integer constants of ``class`` or its an
 
 .. _class_ClassDB_method_class_get_method_list:
 
-- :ref:`Array<class_Array>` **class_get_method_list** **(** :ref:`StringName<class_StringName>` class, :ref:`bool<class_bool>` no_inheritance=false **)** |const|
+- :ref:`Dictionary[]<class_Dictionary>` **class_get_method_list** **(** :ref:`StringName<class_StringName>` class, :ref:`bool<class_bool>` no_inheritance=false **)** |const|
 
 Returns an array with all the methods of ``class`` or its ancestry if ``no_inheritance`` is ``false``. Every element of the array is a :ref:`Dictionary<class_Dictionary>` with the following keys: ``args``, ``default_args``, ``flags``, ``id``, ``name``, ``return: (class_name, hint, hint_string, name, type, usage)``.
 
@@ -143,13 +143,13 @@ Returns an array with all the methods of ``class`` or its ancestry if ``no_inher
 
 - :ref:`Variant<class_Variant>` **class_get_property** **(** :ref:`Object<class_Object>` object, :ref:`StringName<class_StringName>` property **)** |const|
 
-Returns the value of ``property`` of ``class`` or its ancestry.
+Returns the value of ``property`` of ``object`` or its ancestry.
 
 ----
 
 .. _class_ClassDB_method_class_get_property_list:
 
-- :ref:`Array<class_Array>` **class_get_property_list** **(** :ref:`StringName<class_StringName>` class, :ref:`bool<class_bool>` no_inheritance=false **)** |const|
+- :ref:`Dictionary[]<class_Dictionary>` **class_get_property_list** **(** :ref:`StringName<class_StringName>` class, :ref:`bool<class_bool>` no_inheritance=false **)** |const|
 
 Returns an array with all the properties of ``class`` or its ancestry if ``no_inheritance`` is ``false``.
 
@@ -165,7 +165,7 @@ Returns the ``signal`` data of ``class`` or its ancestry. The returned value is
 
 .. _class_ClassDB_method_class_get_signal_list:
 
-- :ref:`Array<class_Array>` **class_get_signal_list** **(** :ref:`StringName<class_StringName>` class, :ref:`bool<class_bool>` no_inheritance=false **)** |const|
+- :ref:`Dictionary[]<class_Dictionary>` **class_get_signal_list** **(** :ref:`StringName<class_StringName>` class, :ref:`bool<class_bool>` no_inheritance=false **)** |const|
 
 Returns an array with all the signals of ``class`` or its ancestry if ``no_inheritance`` is ``false``. Every element of the array is a :ref:`Dictionary<class_Dictionary>` as described in :ref:`class_get_signal<class_ClassDB_method_class_get_signal>`.
 
@@ -207,7 +207,7 @@ Returns whether ``class`` or its ancestry has a signal called ``signal`` or not.
 
 - :ref:`Error<enum_@GlobalScope_Error>` **class_set_property** **(** :ref:`Object<class_Object>` object, :ref:`StringName<class_StringName>` property, :ref:`Variant<class_Variant>` value **)** |const|
 
-Sets ``property`` value of ``class`` to ``value``.
+Sets ``property`` value of ``object`` to ``value``.
 
 ----
 

+ 124 - 124
classes/class_codeedit.rst

@@ -73,125 +73,125 @@ Properties
 Methods
 -------
 
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`_confirm_code_completion<class_CodeEdit_method__confirm_code_completion>` **(** :ref:`bool<class_bool>` replace **)** |virtual|                                                                                                                                                                                                                                                         |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`             | :ref:`_filter_code_completion_candidates<class_CodeEdit_method__filter_code_completion_candidates>` **(** :ref:`Dictionary[]<class_Dictionary>` candidates **)** |virtual| |const|                                                                                                                                                                                                            |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`_request_code_completion<class_CodeEdit_method__request_code_completion>` **(** :ref:`bool<class_bool>` force **)** |virtual|                                                                                                                                                                                                                                                           |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`add_auto_brace_completion_pair<class_CodeEdit_method_add_auto_brace_completion_pair>` **(** :ref:`String<class_String>` start_key, :ref:`String<class_String>` end_key **)**                                                                                                                                                                                                            |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`add_code_completion_option<class_CodeEdit_method_add_code_completion_option>` **(** :ref:`CodeCompletionKind<enum_CodeEdit_CodeCompletionKind>` type, :ref:`String<class_String>` display_text, :ref:`String<class_String>` insert_text, :ref:`Color<class_Color>` text_color=Color(1, 1, 1, 1), :ref:`Resource<class_Resource>` icon=null, :ref:`Variant<class_Variant>` value=0 **)** |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`add_comment_delimiter<class_CodeEdit_method_add_comment_delimiter>` **(** :ref:`String<class_String>` start_key, :ref:`String<class_String>` end_key, :ref:`bool<class_bool>` line_only=false **)**                                                                                                                                                                                     |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`add_string_delimiter<class_CodeEdit_method_add_string_delimiter>` **(** :ref:`String<class_String>` start_key, :ref:`String<class_String>` end_key, :ref:`bool<class_bool>` line_only=false **)**                                                                                                                                                                                       |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`               | :ref:`can_fold_line<class_CodeEdit_method_can_fold_line>` **(** :ref:`int<class_int>` line **)** |const|                                                                                                                                                                                                                                                                                      |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`cancel_code_completion<class_CodeEdit_method_cancel_code_completion>` **(** **)**                                                                                                                                                                                                                                                                                                       |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`clear_bookmarked_lines<class_CodeEdit_method_clear_bookmarked_lines>` **(** **)**                                                                                                                                                                                                                                                                                                       |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`clear_breakpointed_lines<class_CodeEdit_method_clear_breakpointed_lines>` **(** **)**                                                                                                                                                                                                                                                                                                   |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`clear_comment_delimiters<class_CodeEdit_method_clear_comment_delimiters>` **(** **)**                                                                                                                                                                                                                                                                                                   |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`clear_executing_lines<class_CodeEdit_method_clear_executing_lines>` **(** **)**                                                                                                                                                                                                                                                                                                         |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`clear_string_delimiters<class_CodeEdit_method_clear_string_delimiters>` **(** **)**                                                                                                                                                                                                                                                                                                     |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`confirm_code_completion<class_CodeEdit_method_confirm_code_completion>` **(** :ref:`bool<class_bool>` replace=false **)**                                                                                                                                                                                                                                                               |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`do_indent<class_CodeEdit_method_do_indent>` **(** **)**                                                                                                                                                                                                                                                                                                                                 |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`do_unindent<class_CodeEdit_method_do_unindent>` **(** **)**                                                                                                                                                                                                                                                                                                                             |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`fold_all_lines<class_CodeEdit_method_fold_all_lines>` **(** **)**                                                                                                                                                                                                                                                                                                                       |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`fold_line<class_CodeEdit_method_fold_line>` **(** :ref:`int<class_int>` line **)**                                                                                                                                                                                                                                                                                                      |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`           | :ref:`get_auto_brace_completion_close_key<class_CodeEdit_method_get_auto_brace_completion_close_key>` **(** :ref:`String<class_String>` open_key **)** |const|                                                                                                                                                                                                                                |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`             | :ref:`get_bookmarked_lines<class_CodeEdit_method_get_bookmarked_lines>` **(** **)** |const|                                                                                                                                                                                                                                                                                                   |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`             | :ref:`get_breakpointed_lines<class_CodeEdit_method_get_breakpointed_lines>` **(** **)** |const|                                                                                                                                                                                                                                                                                               |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Dictionary<class_Dictionary>`   | :ref:`get_code_completion_option<class_CodeEdit_method_get_code_completion_option>` **(** :ref:`int<class_int>` index **)** |const|                                                                                                                                                                                                                                                           |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Dictionary[]<class_Dictionary>` | :ref:`get_code_completion_options<class_CodeEdit_method_get_code_completion_options>` **(** **)** |const|                                                                                                                                                                                                                                                                                     |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                 | :ref:`get_code_completion_selected_index<class_CodeEdit_method_get_code_completion_selected_index>` **(** **)** |const|                                                                                                                                                                                                                                                                       |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`           | :ref:`get_delimiter_end_key<class_CodeEdit_method_get_delimiter_end_key>` **(** :ref:`int<class_int>` delimiter_index **)** |const|                                                                                                                                                                                                                                                           |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>`         | :ref:`get_delimiter_end_position<class_CodeEdit_method_get_delimiter_end_position>` **(** :ref:`int<class_int>` line, :ref:`int<class_int>` column **)** |const|                                                                                                                                                                                                                              |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`           | :ref:`get_delimiter_start_key<class_CodeEdit_method_get_delimiter_start_key>` **(** :ref:`int<class_int>` delimiter_index **)** |const|                                                                                                                                                                                                                                                       |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>`         | :ref:`get_delimiter_start_position<class_CodeEdit_method_get_delimiter_start_position>` **(** :ref:`int<class_int>` line, :ref:`int<class_int>` column **)** |const|                                                                                                                                                                                                                          |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`             | :ref:`get_executing_lines<class_CodeEdit_method_get_executing_lines>` **(** **)** |const|                                                                                                                                                                                                                                                                                                     |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int[]<class_int>`               | :ref:`get_folded_lines<class_CodeEdit_method_get_folded_lines>` **(** **)** |const|                                                                                                                                                                                                                                                                                                           |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`           | :ref:`get_text_for_code_completion<class_CodeEdit_method_get_text_for_code_completion>` **(** **)** |const|                                                                                                                                                                                                                                                                                   |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`           | :ref:`get_text_for_symbol_lookup<class_CodeEdit_method_get_text_for_symbol_lookup>` **(** **)**                                                                                                                                                                                                                                                                                               |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`               | :ref:`has_auto_brace_completion_close_key<class_CodeEdit_method_has_auto_brace_completion_close_key>` **(** :ref:`String<class_String>` close_key **)** |const|                                                                                                                                                                                                                               |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`               | :ref:`has_auto_brace_completion_open_key<class_CodeEdit_method_has_auto_brace_completion_open_key>` **(** :ref:`String<class_String>` open_key **)** |const|                                                                                                                                                                                                                                  |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`               | :ref:`has_comment_delimiter<class_CodeEdit_method_has_comment_delimiter>` **(** :ref:`String<class_String>` start_key **)** |const|                                                                                                                                                                                                                                                           |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`               | :ref:`has_string_delimiter<class_CodeEdit_method_has_string_delimiter>` **(** :ref:`String<class_String>` start_key **)** |const|                                                                                                                                                                                                                                                             |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`indent_lines<class_CodeEdit_method_indent_lines>` **(** **)**                                                                                                                                                                                                                                                                                                                           |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                 | :ref:`is_in_comment<class_CodeEdit_method_is_in_comment>` **(** :ref:`int<class_int>` line, :ref:`int<class_int>` column=-1 **)** |const|                                                                                                                                                                                                                                                     |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                 | :ref:`is_in_string<class_CodeEdit_method_is_in_string>` **(** :ref:`int<class_int>` line, :ref:`int<class_int>` column=-1 **)** |const|                                                                                                                                                                                                                                                       |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`               | :ref:`is_line_bookmarked<class_CodeEdit_method_is_line_bookmarked>` **(** :ref:`int<class_int>` line **)** |const|                                                                                                                                                                                                                                                                            |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`               | :ref:`is_line_breakpointed<class_CodeEdit_method_is_line_breakpointed>` **(** :ref:`int<class_int>` line **)** |const|                                                                                                                                                                                                                                                                        |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`               | :ref:`is_line_executing<class_CodeEdit_method_is_line_executing>` **(** :ref:`int<class_int>` line **)** |const|                                                                                                                                                                                                                                                                              |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`               | :ref:`is_line_folded<class_CodeEdit_method_is_line_folded>` **(** :ref:`int<class_int>` line **)** |const|                                                                                                                                                                                                                                                                                    |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`remove_comment_delimiter<class_CodeEdit_method_remove_comment_delimiter>` **(** :ref:`String<class_String>` start_key **)**                                                                                                                                                                                                                                                             |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`remove_string_delimiter<class_CodeEdit_method_remove_string_delimiter>` **(** :ref:`String<class_String>` start_key **)**                                                                                                                                                                                                                                                               |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`request_code_completion<class_CodeEdit_method_request_code_completion>` **(** :ref:`bool<class_bool>` force=false **)**                                                                                                                                                                                                                                                                 |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`set_code_completion_selected_index<class_CodeEdit_method_set_code_completion_selected_index>` **(** :ref:`int<class_int>` index **)**                                                                                                                                                                                                                                                   |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`set_code_hint<class_CodeEdit_method_set_code_hint>` **(** :ref:`String<class_String>` code_hint **)**                                                                                                                                                                                                                                                                                   |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`set_code_hint_draw_below<class_CodeEdit_method_set_code_hint_draw_below>` **(** :ref:`bool<class_bool>` draw_below **)**                                                                                                                                                                                                                                                                |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`set_line_as_bookmarked<class_CodeEdit_method_set_line_as_bookmarked>` **(** :ref:`int<class_int>` line, :ref:`bool<class_bool>` bookmarked **)**                                                                                                                                                                                                                                        |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`set_line_as_breakpoint<class_CodeEdit_method_set_line_as_breakpoint>` **(** :ref:`int<class_int>` line, :ref:`bool<class_bool>` breakpointed **)**                                                                                                                                                                                                                                      |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`set_line_as_executing<class_CodeEdit_method_set_line_as_executing>` **(** :ref:`int<class_int>` line, :ref:`bool<class_bool>` executing **)**                                                                                                                                                                                                                                           |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`set_symbol_lookup_word_as_valid<class_CodeEdit_method_set_symbol_lookup_word_as_valid>` **(** :ref:`bool<class_bool>` valid **)**                                                                                                                                                                                                                                                       |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`toggle_foldable_line<class_CodeEdit_method_toggle_foldable_line>` **(** :ref:`int<class_int>` line **)**                                                                                                                                                                                                                                                                                |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`unfold_all_lines<class_CodeEdit_method_unfold_all_lines>` **(** **)**                                                                                                                                                                                                                                                                                                                   |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`unfold_line<class_CodeEdit_method_unfold_line>` **(** :ref:`int<class_int>` line **)**                                                                                                                                                                                                                                                                                                  |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`unindent_lines<class_CodeEdit_method_unindent_lines>` **(** **)**                                                                                                                                                                                                                                                                                                                       |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`update_code_completion_options<class_CodeEdit_method_update_code_completion_options>` **(** :ref:`bool<class_bool>` force **)**                                                                                                                                                                                                                                                         |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`_confirm_code_completion<class_CodeEdit_method__confirm_code_completion>` **(** :ref:`bool<class_bool>` replace **)** |virtual|                                                                                                                                                                                                                                                         |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary[]<class_Dictionary>`           | :ref:`_filter_code_completion_candidates<class_CodeEdit_method__filter_code_completion_candidates>` **(** :ref:`Dictionary[]<class_Dictionary>` candidates **)** |virtual| |const|                                                                                                                                                                                                            |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`_request_code_completion<class_CodeEdit_method__request_code_completion>` **(** :ref:`bool<class_bool>` force **)** |virtual|                                                                                                                                                                                                                                                           |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`add_auto_brace_completion_pair<class_CodeEdit_method_add_auto_brace_completion_pair>` **(** :ref:`String<class_String>` start_key, :ref:`String<class_String>` end_key **)**                                                                                                                                                                                                            |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`add_code_completion_option<class_CodeEdit_method_add_code_completion_option>` **(** :ref:`CodeCompletionKind<enum_CodeEdit_CodeCompletionKind>` type, :ref:`String<class_String>` display_text, :ref:`String<class_String>` insert_text, :ref:`Color<class_Color>` text_color=Color(1, 1, 1, 1), :ref:`Resource<class_Resource>` icon=null, :ref:`Variant<class_Variant>` value=0 **)** |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`add_comment_delimiter<class_CodeEdit_method_add_comment_delimiter>` **(** :ref:`String<class_String>` start_key, :ref:`String<class_String>` end_key, :ref:`bool<class_bool>` line_only=false **)**                                                                                                                                                                                     |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`add_string_delimiter<class_CodeEdit_method_add_string_delimiter>` **(** :ref:`String<class_String>` start_key, :ref:`String<class_String>` end_key, :ref:`bool<class_bool>` line_only=false **)**                                                                                                                                                                                       |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                         | :ref:`can_fold_line<class_CodeEdit_method_can_fold_line>` **(** :ref:`int<class_int>` line **)** |const|                                                                                                                                                                                                                                                                                      |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`cancel_code_completion<class_CodeEdit_method_cancel_code_completion>` **(** **)**                                                                                                                                                                                                                                                                                                       |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`clear_bookmarked_lines<class_CodeEdit_method_clear_bookmarked_lines>` **(** **)**                                                                                                                                                                                                                                                                                                       |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`clear_breakpointed_lines<class_CodeEdit_method_clear_breakpointed_lines>` **(** **)**                                                                                                                                                                                                                                                                                                   |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`clear_comment_delimiters<class_CodeEdit_method_clear_comment_delimiters>` **(** **)**                                                                                                                                                                                                                                                                                                   |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`clear_executing_lines<class_CodeEdit_method_clear_executing_lines>` **(** **)**                                                                                                                                                                                                                                                                                                         |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`clear_string_delimiters<class_CodeEdit_method_clear_string_delimiters>` **(** **)**                                                                                                                                                                                                                                                                                                     |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`confirm_code_completion<class_CodeEdit_method_confirm_code_completion>` **(** :ref:`bool<class_bool>` replace=false **)**                                                                                                                                                                                                                                                               |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`do_indent<class_CodeEdit_method_do_indent>` **(** **)**                                                                                                                                                                                                                                                                                                                                 |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`do_unindent<class_CodeEdit_method_do_unindent>` **(** **)**                                                                                                                                                                                                                                                                                                                             |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`fold_all_lines<class_CodeEdit_method_fold_all_lines>` **(** **)**                                                                                                                                                                                                                                                                                                                       |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`fold_line<class_CodeEdit_method_fold_line>` **(** :ref:`int<class_int>` line **)**                                                                                                                                                                                                                                                                                                      |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                     | :ref:`get_auto_brace_completion_close_key<class_CodeEdit_method_get_auto_brace_completion_close_key>` **(** :ref:`String<class_String>` open_key **)** |const|                                                                                                                                                                                                                                |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedInt32Array<class_PackedInt32Array>` | :ref:`get_bookmarked_lines<class_CodeEdit_method_get_bookmarked_lines>` **(** **)** |const|                                                                                                                                                                                                                                                                                                   |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedInt32Array<class_PackedInt32Array>` | :ref:`get_breakpointed_lines<class_CodeEdit_method_get_breakpointed_lines>` **(** **)** |const|                                                                                                                                                                                                                                                                                               |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>`             | :ref:`get_code_completion_option<class_CodeEdit_method_get_code_completion_option>` **(** :ref:`int<class_int>` index **)** |const|                                                                                                                                                                                                                                                           |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary[]<class_Dictionary>`           | :ref:`get_code_completion_options<class_CodeEdit_method_get_code_completion_options>` **(** **)** |const|                                                                                                                                                                                                                                                                                     |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                           | :ref:`get_code_completion_selected_index<class_CodeEdit_method_get_code_completion_selected_index>` **(** **)** |const|                                                                                                                                                                                                                                                                       |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                     | :ref:`get_delimiter_end_key<class_CodeEdit_method_get_delimiter_end_key>` **(** :ref:`int<class_int>` delimiter_index **)** |const|                                                                                                                                                                                                                                                           |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>`                   | :ref:`get_delimiter_end_position<class_CodeEdit_method_get_delimiter_end_position>` **(** :ref:`int<class_int>` line, :ref:`int<class_int>` column **)** |const|                                                                                                                                                                                                                              |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                     | :ref:`get_delimiter_start_key<class_CodeEdit_method_get_delimiter_start_key>` **(** :ref:`int<class_int>` delimiter_index **)** |const|                                                                                                                                                                                                                                                       |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>`                   | :ref:`get_delimiter_start_position<class_CodeEdit_method_get_delimiter_start_position>` **(** :ref:`int<class_int>` line, :ref:`int<class_int>` column **)** |const|                                                                                                                                                                                                                          |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedInt32Array<class_PackedInt32Array>` | :ref:`get_executing_lines<class_CodeEdit_method_get_executing_lines>` **(** **)** |const|                                                                                                                                                                                                                                                                                                     |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int[]<class_int>`                         | :ref:`get_folded_lines<class_CodeEdit_method_get_folded_lines>` **(** **)** |const|                                                                                                                                                                                                                                                                                                           |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                     | :ref:`get_text_for_code_completion<class_CodeEdit_method_get_text_for_code_completion>` **(** **)** |const|                                                                                                                                                                                                                                                                                   |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                     | :ref:`get_text_for_symbol_lookup<class_CodeEdit_method_get_text_for_symbol_lookup>` **(** **)**                                                                                                                                                                                                                                                                                               |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                         | :ref:`has_auto_brace_completion_close_key<class_CodeEdit_method_has_auto_brace_completion_close_key>` **(** :ref:`String<class_String>` close_key **)** |const|                                                                                                                                                                                                                               |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                         | :ref:`has_auto_brace_completion_open_key<class_CodeEdit_method_has_auto_brace_completion_open_key>` **(** :ref:`String<class_String>` open_key **)** |const|                                                                                                                                                                                                                                  |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                         | :ref:`has_comment_delimiter<class_CodeEdit_method_has_comment_delimiter>` **(** :ref:`String<class_String>` start_key **)** |const|                                                                                                                                                                                                                                                           |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                         | :ref:`has_string_delimiter<class_CodeEdit_method_has_string_delimiter>` **(** :ref:`String<class_String>` start_key **)** |const|                                                                                                                                                                                                                                                             |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`indent_lines<class_CodeEdit_method_indent_lines>` **(** **)**                                                                                                                                                                                                                                                                                                                           |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                           | :ref:`is_in_comment<class_CodeEdit_method_is_in_comment>` **(** :ref:`int<class_int>` line, :ref:`int<class_int>` column=-1 **)** |const|                                                                                                                                                                                                                                                     |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                           | :ref:`is_in_string<class_CodeEdit_method_is_in_string>` **(** :ref:`int<class_int>` line, :ref:`int<class_int>` column=-1 **)** |const|                                                                                                                                                                                                                                                       |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                         | :ref:`is_line_bookmarked<class_CodeEdit_method_is_line_bookmarked>` **(** :ref:`int<class_int>` line **)** |const|                                                                                                                                                                                                                                                                            |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                         | :ref:`is_line_breakpointed<class_CodeEdit_method_is_line_breakpointed>` **(** :ref:`int<class_int>` line **)** |const|                                                                                                                                                                                                                                                                        |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                         | :ref:`is_line_executing<class_CodeEdit_method_is_line_executing>` **(** :ref:`int<class_int>` line **)** |const|                                                                                                                                                                                                                                                                              |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                         | :ref:`is_line_folded<class_CodeEdit_method_is_line_folded>` **(** :ref:`int<class_int>` line **)** |const|                                                                                                                                                                                                                                                                                    |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`remove_comment_delimiter<class_CodeEdit_method_remove_comment_delimiter>` **(** :ref:`String<class_String>` start_key **)**                                                                                                                                                                                                                                                             |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`remove_string_delimiter<class_CodeEdit_method_remove_string_delimiter>` **(** :ref:`String<class_String>` start_key **)**                                                                                                                                                                                                                                                               |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`request_code_completion<class_CodeEdit_method_request_code_completion>` **(** :ref:`bool<class_bool>` force=false **)**                                                                                                                                                                                                                                                                 |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`set_code_completion_selected_index<class_CodeEdit_method_set_code_completion_selected_index>` **(** :ref:`int<class_int>` index **)**                                                                                                                                                                                                                                                   |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`set_code_hint<class_CodeEdit_method_set_code_hint>` **(** :ref:`String<class_String>` code_hint **)**                                                                                                                                                                                                                                                                                   |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`set_code_hint_draw_below<class_CodeEdit_method_set_code_hint_draw_below>` **(** :ref:`bool<class_bool>` draw_below **)**                                                                                                                                                                                                                                                                |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`set_line_as_bookmarked<class_CodeEdit_method_set_line_as_bookmarked>` **(** :ref:`int<class_int>` line, :ref:`bool<class_bool>` bookmarked **)**                                                                                                                                                                                                                                        |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`set_line_as_breakpoint<class_CodeEdit_method_set_line_as_breakpoint>` **(** :ref:`int<class_int>` line, :ref:`bool<class_bool>` breakpointed **)**                                                                                                                                                                                                                                      |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`set_line_as_executing<class_CodeEdit_method_set_line_as_executing>` **(** :ref:`int<class_int>` line, :ref:`bool<class_bool>` executing **)**                                                                                                                                                                                                                                           |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`set_symbol_lookup_word_as_valid<class_CodeEdit_method_set_symbol_lookup_word_as_valid>` **(** :ref:`bool<class_bool>` valid **)**                                                                                                                                                                                                                                                       |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`toggle_foldable_line<class_CodeEdit_method_toggle_foldable_line>` **(** :ref:`int<class_int>` line **)**                                                                                                                                                                                                                                                                                |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`unfold_all_lines<class_CodeEdit_method_unfold_all_lines>` **(** **)**                                                                                                                                                                                                                                                                                                                   |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`unfold_line<class_CodeEdit_method_unfold_line>` **(** :ref:`int<class_int>` line **)**                                                                                                                                                                                                                                                                                                  |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`unindent_lines<class_CodeEdit_method_unindent_lines>` **(** **)**                                                                                                                                                                                                                                                                                                                       |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`update_code_completion_options<class_CodeEdit_method_update_code_completion_options>` **(** :ref:`bool<class_bool>` force **)**                                                                                                                                                                                                                                                         |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Theme Properties
 ----------------
@@ -623,7 +623,7 @@ Prefixes to trigger an automatic indent.
 | *Getter*  | get_indent_size()      |
 +-----------+------------------------+
 
-Size of tabs, if ``indent_use_spaces`` is enabled the amount of spaces to use.
+Size of tabs, if ``indent_use_spaces`` is enabled the number of spaces to use.
 
 ----
 
@@ -702,7 +702,7 @@ Override this method to define how the selected entry should be inserted. If ``r
 
 .. _class_CodeEdit_method__filter_code_completion_candidates:
 
-- :ref:`Array<class_Array>` **_filter_code_completion_candidates** **(** :ref:`Dictionary[]<class_Dictionary>` candidates **)** |virtual| |const|
+- :ref:`Dictionary[]<class_Dictionary>` **_filter_code_completion_candidates** **(** :ref:`Dictionary[]<class_Dictionary>` candidates **)** |virtual| |const|
 
 Override this method to define what items in ``candidates`` should be displayed.
 
@@ -868,7 +868,7 @@ Gets the matching auto brace close key for ``open_key``.
 
 .. _class_CodeEdit_method_get_bookmarked_lines:
 
-- :ref:`Array<class_Array>` **get_bookmarked_lines** **(** **)** |const|
+- :ref:`PackedInt32Array<class_PackedInt32Array>` **get_bookmarked_lines** **(** **)** |const|
 
 Gets all bookmarked lines.
 
@@ -876,7 +876,7 @@ Gets all bookmarked lines.
 
 .. _class_CodeEdit_method_get_breakpointed_lines:
 
-- :ref:`Array<class_Array>` **get_breakpointed_lines** **(** **)** |const|
+- :ref:`PackedInt32Array<class_PackedInt32Array>` **get_breakpointed_lines** **(** **)** |const|
 
 Gets all breakpointed lines.
 
@@ -952,7 +952,7 @@ If ``line`` ``column`` is in a string or comment, returns the start position of
 
 .. _class_CodeEdit_method_get_executing_lines:
 
-- :ref:`Array<class_Array>` **get_executing_lines** **(** **)** |const|
+- :ref:`PackedInt32Array<class_PackedInt32Array>` **get_executing_lines** **(** **)** |const|
 
 Gets all executing lines.
 

+ 127 - 63
classes/class_collisionobject2d.rst

@@ -26,70 +26,80 @@ CollisionObject2D is the base class for 2D physics objects. It can hold any numb
 Properties
 ----------
 
-+--------------------------------------------------------+--------------------------------------------------------------------------+----------+
-| :ref:`int<class_int>`                                  | :ref:`collision_layer<class_CollisionObject2D_property_collision_layer>` | ``1``    |
-+--------------------------------------------------------+--------------------------------------------------------------------------+----------+
-| :ref:`int<class_int>`                                  | :ref:`collision_mask<class_CollisionObject2D_property_collision_mask>`   | ``1``    |
-+--------------------------------------------------------+--------------------------------------------------------------------------+----------+
-| :ref:`DisableMode<enum_CollisionObject2D_DisableMode>` | :ref:`disable_mode<class_CollisionObject2D_property_disable_mode>`       | ``0``    |
-+--------------------------------------------------------+--------------------------------------------------------------------------+----------+
-| :ref:`bool<class_bool>`                                | :ref:`input_pickable<class_CollisionObject2D_property_input_pickable>`   | ``true`` |
-+--------------------------------------------------------+--------------------------------------------------------------------------+----------+
++--------------------------------------------------------+--------------------------------------------------------------------------------+----------+
+| :ref:`int<class_int>`                                  | :ref:`collision_layer<class_CollisionObject2D_property_collision_layer>`       | ``1``    |
++--------------------------------------------------------+--------------------------------------------------------------------------------+----------+
+| :ref:`int<class_int>`                                  | :ref:`collision_mask<class_CollisionObject2D_property_collision_mask>`         | ``1``    |
++--------------------------------------------------------+--------------------------------------------------------------------------------+----------+
+| :ref:`float<class_float>`                              | :ref:`collision_priority<class_CollisionObject2D_property_collision_priority>` | ``1.0``  |
++--------------------------------------------------------+--------------------------------------------------------------------------------+----------+
+| :ref:`DisableMode<enum_CollisionObject2D_DisableMode>` | :ref:`disable_mode<class_CollisionObject2D_property_disable_mode>`             | ``0``    |
++--------------------------------------------------------+--------------------------------------------------------------------------------+----------+
+| :ref:`bool<class_bool>`                                | :ref:`input_pickable<class_CollisionObject2D_property_input_pickable>`         | ``true`` |
++--------------------------------------------------------+--------------------------------------------------------------------------------+----------+
 
 Methods
 -------
 
-+---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`_input_event<class_CollisionObject2D_method__input_event>` **(** :ref:`Viewport<class_Viewport>` viewport, :ref:`InputEvent<class_InputEvent>` event, :ref:`int<class_int>` shape_idx **)** |virtual| |
-+---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                 | :ref:`create_shape_owner<class_CollisionObject2D_method_create_shape_owner>` **(** :ref:`Object<class_Object>` owner **)**                                                                                  |
-+---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`               | :ref:`get_collision_layer_value<class_CollisionObject2D_method_get_collision_layer_value>` **(** :ref:`int<class_int>` layer_number **)** |const|                                                           |
-+---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`               | :ref:`get_collision_mask_value<class_CollisionObject2D_method_get_collision_mask_value>` **(** :ref:`int<class_int>` layer_number **)** |const|                                                             |
-+---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                 | :ref:`get_rid<class_CollisionObject2D_method_get_rid>` **(** **)** |const|                                                                                                                                  |
-+---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`             | :ref:`get_shape_owner_one_way_collision_margin<class_CollisionObject2D_method_get_shape_owner_one_way_collision_margin>` **(** :ref:`int<class_int>` owner_id **)** |const|                                 |
-+---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`             | :ref:`get_shape_owners<class_CollisionObject2D_method_get_shape_owners>` **(** **)**                                                                                                                        |
-+---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`               | :ref:`is_shape_owner_disabled<class_CollisionObject2D_method_is_shape_owner_disabled>` **(** :ref:`int<class_int>` owner_id **)** |const|                                                                   |
-+---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`               | :ref:`is_shape_owner_one_way_collision_enabled<class_CollisionObject2D_method_is_shape_owner_one_way_collision_enabled>` **(** :ref:`int<class_int>` owner_id **)** |const|                                 |
-+---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`remove_shape_owner<class_CollisionObject2D_method_remove_shape_owner>` **(** :ref:`int<class_int>` owner_id **)**                                                                                     |
-+---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`set_collision_layer_value<class_CollisionObject2D_method_set_collision_layer_value>` **(** :ref:`int<class_int>` layer_number, :ref:`bool<class_bool>` value **)**                                    |
-+---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`set_collision_mask_value<class_CollisionObject2D_method_set_collision_mask_value>` **(** :ref:`int<class_int>` layer_number, :ref:`bool<class_bool>` value **)**                                      |
-+---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                 | :ref:`shape_find_owner<class_CollisionObject2D_method_shape_find_owner>` **(** :ref:`int<class_int>` shape_index **)** |const|                                                                              |
-+---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`shape_owner_add_shape<class_CollisionObject2D_method_shape_owner_add_shape>` **(** :ref:`int<class_int>` owner_id, :ref:`Shape2D<class_Shape2D>` shape **)**                                          |
-+---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`shape_owner_clear_shapes<class_CollisionObject2D_method_shape_owner_clear_shapes>` **(** :ref:`int<class_int>` owner_id **)**                                                                         |
-+---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Object<class_Object>`           | :ref:`shape_owner_get_owner<class_CollisionObject2D_method_shape_owner_get_owner>` **(** :ref:`int<class_int>` owner_id **)** |const|                                                                       |
-+---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Shape2D<class_Shape2D>`         | :ref:`shape_owner_get_shape<class_CollisionObject2D_method_shape_owner_get_shape>` **(** :ref:`int<class_int>` owner_id, :ref:`int<class_int>` shape_id **)** |const|                                       |
-+---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                 | :ref:`shape_owner_get_shape_count<class_CollisionObject2D_method_shape_owner_get_shape_count>` **(** :ref:`int<class_int>` owner_id **)** |const|                                                           |
-+---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                 | :ref:`shape_owner_get_shape_index<class_CollisionObject2D_method_shape_owner_get_shape_index>` **(** :ref:`int<class_int>` owner_id, :ref:`int<class_int>` shape_id **)** |const|                           |
-+---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Transform2D<class_Transform2D>` | :ref:`shape_owner_get_transform<class_CollisionObject2D_method_shape_owner_get_transform>` **(** :ref:`int<class_int>` owner_id **)** |const|                                                               |
-+---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`shape_owner_remove_shape<class_CollisionObject2D_method_shape_owner_remove_shape>` **(** :ref:`int<class_int>` owner_id, :ref:`int<class_int>` shape_id **)**                                         |
-+---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`shape_owner_set_disabled<class_CollisionObject2D_method_shape_owner_set_disabled>` **(** :ref:`int<class_int>` owner_id, :ref:`bool<class_bool>` disabled **)**                                       |
-+---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`shape_owner_set_one_way_collision<class_CollisionObject2D_method_shape_owner_set_one_way_collision>` **(** :ref:`int<class_int>` owner_id, :ref:`bool<class_bool>` enable **)**                       |
-+---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`shape_owner_set_one_way_collision_margin<class_CollisionObject2D_method_shape_owner_set_one_way_collision_margin>` **(** :ref:`int<class_int>` owner_id, :ref:`float<class_float>` margin **)**       |
-+---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`shape_owner_set_transform<class_CollisionObject2D_method_shape_owner_set_transform>` **(** :ref:`int<class_int>` owner_id, :ref:`Transform2D<class_Transform2D>` transform **)**                      |
-+---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`_input_event<class_CollisionObject2D_method__input_event>` **(** :ref:`Viewport<class_Viewport>` viewport, :ref:`InputEvent<class_InputEvent>` event, :ref:`int<class_int>` shape_idx **)** |virtual| |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`_mouse_enter<class_CollisionObject2D_method__mouse_enter>` **(** **)** |virtual|                                                                                                                      |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`_mouse_exit<class_CollisionObject2D_method__mouse_exit>` **(** **)** |virtual|                                                                                                                        |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`_mouse_shape_enter<class_CollisionObject2D_method__mouse_shape_enter>` **(** :ref:`int<class_int>` shape_idx **)** |virtual|                                                                          |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`_mouse_shape_exit<class_CollisionObject2D_method__mouse_shape_exit>` **(** :ref:`int<class_int>` shape_idx **)** |virtual|                                                                            |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                           | :ref:`create_shape_owner<class_CollisionObject2D_method_create_shape_owner>` **(** :ref:`Object<class_Object>` owner **)**                                                                                  |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                         | :ref:`get_collision_layer_value<class_CollisionObject2D_method_get_collision_layer_value>` **(** :ref:`int<class_int>` layer_number **)** |const|                                                           |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                         | :ref:`get_collision_mask_value<class_CollisionObject2D_method_get_collision_mask_value>` **(** :ref:`int<class_int>` layer_number **)** |const|                                                             |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                           | :ref:`get_rid<class_CollisionObject2D_method_get_rid>` **(** **)** |const|                                                                                                                                  |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                       | :ref:`get_shape_owner_one_way_collision_margin<class_CollisionObject2D_method_get_shape_owner_one_way_collision_margin>` **(** :ref:`int<class_int>` owner_id **)** |const|                                 |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedInt32Array<class_PackedInt32Array>` | :ref:`get_shape_owners<class_CollisionObject2D_method_get_shape_owners>` **(** **)**                                                                                                                        |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                         | :ref:`is_shape_owner_disabled<class_CollisionObject2D_method_is_shape_owner_disabled>` **(** :ref:`int<class_int>` owner_id **)** |const|                                                                   |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                         | :ref:`is_shape_owner_one_way_collision_enabled<class_CollisionObject2D_method_is_shape_owner_one_way_collision_enabled>` **(** :ref:`int<class_int>` owner_id **)** |const|                                 |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`remove_shape_owner<class_CollisionObject2D_method_remove_shape_owner>` **(** :ref:`int<class_int>` owner_id **)**                                                                                     |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`set_collision_layer_value<class_CollisionObject2D_method_set_collision_layer_value>` **(** :ref:`int<class_int>` layer_number, :ref:`bool<class_bool>` value **)**                                    |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`set_collision_mask_value<class_CollisionObject2D_method_set_collision_mask_value>` **(** :ref:`int<class_int>` layer_number, :ref:`bool<class_bool>` value **)**                                      |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                           | :ref:`shape_find_owner<class_CollisionObject2D_method_shape_find_owner>` **(** :ref:`int<class_int>` shape_index **)** |const|                                                                              |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`shape_owner_add_shape<class_CollisionObject2D_method_shape_owner_add_shape>` **(** :ref:`int<class_int>` owner_id, :ref:`Shape2D<class_Shape2D>` shape **)**                                          |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`shape_owner_clear_shapes<class_CollisionObject2D_method_shape_owner_clear_shapes>` **(** :ref:`int<class_int>` owner_id **)**                                                                         |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Object<class_Object>`                     | :ref:`shape_owner_get_owner<class_CollisionObject2D_method_shape_owner_get_owner>` **(** :ref:`int<class_int>` owner_id **)** |const|                                                                       |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Shape2D<class_Shape2D>`                   | :ref:`shape_owner_get_shape<class_CollisionObject2D_method_shape_owner_get_shape>` **(** :ref:`int<class_int>` owner_id, :ref:`int<class_int>` shape_id **)** |const|                                       |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                           | :ref:`shape_owner_get_shape_count<class_CollisionObject2D_method_shape_owner_get_shape_count>` **(** :ref:`int<class_int>` owner_id **)** |const|                                                           |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                           | :ref:`shape_owner_get_shape_index<class_CollisionObject2D_method_shape_owner_get_shape_index>` **(** :ref:`int<class_int>` owner_id, :ref:`int<class_int>` shape_id **)** |const|                           |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Transform2D<class_Transform2D>`           | :ref:`shape_owner_get_transform<class_CollisionObject2D_method_shape_owner_get_transform>` **(** :ref:`int<class_int>` owner_id **)** |const|                                                               |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`shape_owner_remove_shape<class_CollisionObject2D_method_shape_owner_remove_shape>` **(** :ref:`int<class_int>` owner_id, :ref:`int<class_int>` shape_id **)**                                         |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`shape_owner_set_disabled<class_CollisionObject2D_method_shape_owner_set_disabled>` **(** :ref:`int<class_int>` owner_id, :ref:`bool<class_bool>` disabled **)**                                       |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`shape_owner_set_one_way_collision<class_CollisionObject2D_method_shape_owner_set_one_way_collision>` **(** :ref:`int<class_int>` owner_id, :ref:`bool<class_bool>` enable **)**                       |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`shape_owner_set_one_way_collision_margin<class_CollisionObject2D_method_shape_owner_set_one_way_collision_margin>` **(** :ref:`int<class_int>` owner_id, :ref:`float<class_float>` margin **)**       |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`shape_owner_set_transform<class_CollisionObject2D_method_shape_owner_set_transform>` **(** :ref:`int<class_int>` owner_id, :ref:`Transform2D<class_Transform2D>` transform **)**                      |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Signals
 -------
@@ -98,7 +108,7 @@ Signals
 
 - **input_event** **(** :ref:`Node<class_Node>` viewport, :ref:`InputEvent<class_InputEvent>` event, :ref:`int<class_int>` shape_idx **)**
 
-Emitted when an input event occurs. Requires :ref:`input_pickable<class_CollisionObject2D_property_input_pickable>` to be ``true`` and at least one ``collision_layer`` bit to be set. See :ref:`_input_event<class_CollisionObject2D_method__input_event>` for details.
+Emitted when an input event occurs. Requires :ref:`input_pickable<class_CollisionObject2D_property_input_pickable>` to be ``true`` and at least one :ref:`collision_layer<class_CollisionObject2D_property_collision_layer>` bit to be set. See :ref:`_input_event<class_CollisionObject2D_method__input_event>` for details.
 
 ----
 
@@ -108,6 +118,8 @@ Emitted when an input event occurs. Requires :ref:`input_pickable<class_Collisio
 
 Emitted when the mouse pointer enters any of this object's shapes. Requires :ref:`input_pickable<class_CollisionObject2D_property_input_pickable>` to be ``true`` and at least one :ref:`collision_layer<class_CollisionObject2D_property_collision_layer>` bit to be set. Note that moving between different shapes within a single ``CollisionObject2D`` won't cause this signal to be emitted.
 
+\ **Note:** Due to the lack of continuous collision detection, this signal may not be emitted in the expected order if the mouse moves fast enough and the ``CollisionObject2D``'s area is small. This signal may also not be emitted if another ``CollisionObject2D`` is overlapping the ``CollisionObject2D`` in question.
+
 ----
 
 .. _class_CollisionObject2D_signal_mouse_exited:
@@ -116,6 +128,8 @@ Emitted when the mouse pointer enters any of this object's shapes. Requires :ref
 
 Emitted when the mouse pointer exits all this object's shapes. Requires :ref:`input_pickable<class_CollisionObject2D_property_input_pickable>` to be ``true`` and at least one :ref:`collision_layer<class_CollisionObject2D_property_collision_layer>` bit to be set. Note that moving between different shapes within a single ``CollisionObject2D`` won't cause this signal to be emitted.
 
+\ **Note:** Due to the lack of continuous collision detection, this signal may not be emitted in the expected order if the mouse moves fast enough and the ``CollisionObject2D``'s area is small. This signal may also not be emitted if another ``CollisionObject2D`` is overlapping the ``CollisionObject2D`` in question.
+
 ----
 
 .. _class_CollisionObject2D_signal_mouse_shape_entered:
@@ -194,6 +208,22 @@ The physics layers this CollisionObject2D scans. Collision objects can scan one
 
 ----
 
+.. _class_CollisionObject2D_property_collision_priority:
+
+- :ref:`float<class_float>` **collision_priority**
+
++-----------+-------------------------------+
+| *Default* | ``1.0``                       |
++-----------+-------------------------------+
+| *Setter*  | set_collision_priority(value) |
++-----------+-------------------------------+
+| *Getter*  | get_collision_priority()      |
++-----------+-------------------------------+
+
+The priority used to solve colliding when occurring penetration. The higher the priority is, the lower the penetration into the object will be. This can for example be used to prevent the player from breaking through the boundaries of a level.
+
+----
+
 .. _class_CollisionObject2D_property_disable_mode:
 
 - :ref:`DisableMode<enum_CollisionObject2D_DisableMode>` **disable_mode**
@@ -231,7 +261,41 @@ Method Descriptions
 
 - void **_input_event** **(** :ref:`Viewport<class_Viewport>` viewport, :ref:`InputEvent<class_InputEvent>` event, :ref:`int<class_int>` shape_idx **)** |virtual|
 
-Accepts unhandled :ref:`InputEvent<class_InputEvent>`\ s. Requires :ref:`input_pickable<class_CollisionObject2D_property_input_pickable>` to be ``true``. ``shape_idx`` is the child index of the clicked :ref:`Shape2D<class_Shape2D>`. Connect to the ``input_event`` signal to easily pick up these events.
+Accepts unhandled :ref:`InputEvent<class_InputEvent>`\ s. ``shape_idx`` is the child index of the clicked :ref:`Shape2D<class_Shape2D>`. Connect to the ``input_event`` signal to easily pick up these events.
+
+\ **Note:** :ref:`_input_event<class_CollisionObject2D_method__input_event>` requires :ref:`input_pickable<class_CollisionObject2D_property_input_pickable>` to be ``true`` and at least one :ref:`collision_layer<class_CollisionObject2D_property_collision_layer>` bit to be set.
+
+----
+
+.. _class_CollisionObject2D_method__mouse_enter:
+
+- void **_mouse_enter** **(** **)** |virtual|
+
+Called when the mouse pointer enters any of this object's shapes. Requires :ref:`input_pickable<class_CollisionObject2D_property_input_pickable>` to be ``true`` and at least one :ref:`collision_layer<class_CollisionObject2D_property_collision_layer>` bit to be set. Note that moving between different shapes within a single ``CollisionObject2D`` won't cause this function to be called.
+
+----
+
+.. _class_CollisionObject2D_method__mouse_exit:
+
+- void **_mouse_exit** **(** **)** |virtual|
+
+Called when the mouse pointer exits all this object's shapes. Requires :ref:`input_pickable<class_CollisionObject2D_property_input_pickable>` to be ``true`` and at least one :ref:`collision_layer<class_CollisionObject2D_property_collision_layer>` bit to be set. Note that moving between different shapes within a single ``CollisionObject2D`` won't cause this function to be called.
+
+----
+
+.. _class_CollisionObject2D_method__mouse_shape_enter:
+
+- void **_mouse_shape_enter** **(** :ref:`int<class_int>` shape_idx **)** |virtual|
+
+Called when the mouse pointer enters any of this object's shapes or moves from one shape to another. ``shape_idx`` is the child index of the newly entered :ref:`Shape2D<class_Shape2D>`. Requires :ref:`input_pickable<class_CollisionObject2D_property_input_pickable>` to be ``true`` and at least one :ref:`collision_layer<class_CollisionObject2D_property_collision_layer>` bit to be called.
+
+----
+
+.. _class_CollisionObject2D_method__mouse_shape_exit:
+
+- void **_mouse_shape_exit** **(** :ref:`int<class_int>` shape_idx **)** |virtual|
+
+Called when the mouse pointer exits any of this object's shapes. ``shape_idx`` is the child index of the exited :ref:`Shape2D<class_Shape2D>`. Requires :ref:`input_pickable<class_CollisionObject2D_property_input_pickable>` to be ``true`` and at least one :ref:`collision_layer<class_CollisionObject2D_property_collision_layer>` bit to be called.
 
 ----
 
@@ -277,7 +341,7 @@ Returns the ``one_way_collision_margin`` of the shape owner identified by given
 
 .. _class_CollisionObject2D_method_get_shape_owners:
 
-- :ref:`Array<class_Array>` **get_shape_owners** **(** **)**
+- :ref:`PackedInt32Array<class_PackedInt32Array>` **get_shape_owners** **(** **)**
 
 Returns an :ref:`Array<class_Array>` of ``owner_id`` identifiers. You can use these ids in other methods that take ``owner_id`` as an argument.
 

+ 90 - 46
classes/class_collisionobject3d.rst

@@ -29,6 +29,8 @@ Properties
 +--------------------------------------------------------+--------------------------------------------------------------------------------------+-----------+
 | :ref:`int<class_int>`                                  | :ref:`collision_mask<class_CollisionObject3D_property_collision_mask>`               | ``1``     |
 +--------------------------------------------------------+--------------------------------------------------------------------------------------+-----------+
+| :ref:`float<class_float>`                              | :ref:`collision_priority<class_CollisionObject3D_property_collision_priority>`       | ``1.0``   |
++--------------------------------------------------------+--------------------------------------------------------------------------------------+-----------+
 | :ref:`DisableMode<enum_CollisionObject3D_DisableMode>` | :ref:`disable_mode<class_CollisionObject3D_property_disable_mode>`                   | ``0``     |
 +--------------------------------------------------------+--------------------------------------------------------------------------------------+-----------+
 | :ref:`bool<class_bool>`                                | :ref:`input_capture_on_drag<class_CollisionObject3D_property_input_capture_on_drag>` | ``false`` |
@@ -39,49 +41,53 @@ Properties
 Methods
 -------
 
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`_input_event<class_CollisionObject3D_method__input_event>` **(** :ref:`Camera3D<class_Camera3D>` camera, :ref:`InputEvent<class_InputEvent>` event, :ref:`Vector3<class_Vector3>` position, :ref:`Vector3<class_Vector3>` normal, :ref:`int<class_int>` shape_idx **)** |virtual| |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                 | :ref:`create_shape_owner<class_CollisionObject3D_method_create_shape_owner>` **(** :ref:`Object<class_Object>` owner **)**                                                                                                                                                              |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`               | :ref:`get_collision_layer_value<class_CollisionObject3D_method_get_collision_layer_value>` **(** :ref:`int<class_int>` layer_number **)** |const|                                                                                                                                       |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`               | :ref:`get_collision_mask_value<class_CollisionObject3D_method_get_collision_mask_value>` **(** :ref:`int<class_int>` layer_number **)** |const|                                                                                                                                         |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                 | :ref:`get_rid<class_CollisionObject3D_method_get_rid>` **(** **)** |const|                                                                                                                                                                                                              |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`             | :ref:`get_shape_owners<class_CollisionObject3D_method_get_shape_owners>` **(** **)**                                                                                                                                                                                                    |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`               | :ref:`is_shape_owner_disabled<class_CollisionObject3D_method_is_shape_owner_disabled>` **(** :ref:`int<class_int>` owner_id **)** |const|                                                                                                                                               |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`remove_shape_owner<class_CollisionObject3D_method_remove_shape_owner>` **(** :ref:`int<class_int>` owner_id **)**                                                                                                                                                                 |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`set_collision_layer_value<class_CollisionObject3D_method_set_collision_layer_value>` **(** :ref:`int<class_int>` layer_number, :ref:`bool<class_bool>` value **)**                                                                                                                |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`set_collision_mask_value<class_CollisionObject3D_method_set_collision_mask_value>` **(** :ref:`int<class_int>` layer_number, :ref:`bool<class_bool>` value **)**                                                                                                                  |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                 | :ref:`shape_find_owner<class_CollisionObject3D_method_shape_find_owner>` **(** :ref:`int<class_int>` shape_index **)** |const|                                                                                                                                                          |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`shape_owner_add_shape<class_CollisionObject3D_method_shape_owner_add_shape>` **(** :ref:`int<class_int>` owner_id, :ref:`Shape3D<class_Shape3D>` shape **)**                                                                                                                      |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`shape_owner_clear_shapes<class_CollisionObject3D_method_shape_owner_clear_shapes>` **(** :ref:`int<class_int>` owner_id **)**                                                                                                                                                     |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Object<class_Object>`           | :ref:`shape_owner_get_owner<class_CollisionObject3D_method_shape_owner_get_owner>` **(** :ref:`int<class_int>` owner_id **)** |const|                                                                                                                                                   |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Shape3D<class_Shape3D>`         | :ref:`shape_owner_get_shape<class_CollisionObject3D_method_shape_owner_get_shape>` **(** :ref:`int<class_int>` owner_id, :ref:`int<class_int>` shape_id **)** |const|                                                                                                                   |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                 | :ref:`shape_owner_get_shape_count<class_CollisionObject3D_method_shape_owner_get_shape_count>` **(** :ref:`int<class_int>` owner_id **)** |const|                                                                                                                                       |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                 | :ref:`shape_owner_get_shape_index<class_CollisionObject3D_method_shape_owner_get_shape_index>` **(** :ref:`int<class_int>` owner_id, :ref:`int<class_int>` shape_id **)** |const|                                                                                                       |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Transform3D<class_Transform3D>` | :ref:`shape_owner_get_transform<class_CollisionObject3D_method_shape_owner_get_transform>` **(** :ref:`int<class_int>` owner_id **)** |const|                                                                                                                                           |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`shape_owner_remove_shape<class_CollisionObject3D_method_shape_owner_remove_shape>` **(** :ref:`int<class_int>` owner_id, :ref:`int<class_int>` shape_id **)**                                                                                                                     |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`shape_owner_set_disabled<class_CollisionObject3D_method_shape_owner_set_disabled>` **(** :ref:`int<class_int>` owner_id, :ref:`bool<class_bool>` disabled **)**                                                                                                                   |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`shape_owner_set_transform<class_CollisionObject3D_method_shape_owner_set_transform>` **(** :ref:`int<class_int>` owner_id, :ref:`Transform3D<class_Transform3D>` transform **)**                                                                                                  |
-+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`_input_event<class_CollisionObject3D_method__input_event>` **(** :ref:`Camera3D<class_Camera3D>` camera, :ref:`InputEvent<class_InputEvent>` event, :ref:`Vector3<class_Vector3>` position, :ref:`Vector3<class_Vector3>` normal, :ref:`int<class_int>` shape_idx **)** |virtual| |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`_mouse_enter<class_CollisionObject3D_method__mouse_enter>` **(** **)** |virtual|                                                                                                                                                                                                  |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`_mouse_exit<class_CollisionObject3D_method__mouse_exit>` **(** **)** |virtual|                                                                                                                                                                                                    |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                           | :ref:`create_shape_owner<class_CollisionObject3D_method_create_shape_owner>` **(** :ref:`Object<class_Object>` owner **)**                                                                                                                                                              |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                         | :ref:`get_collision_layer_value<class_CollisionObject3D_method_get_collision_layer_value>` **(** :ref:`int<class_int>` layer_number **)** |const|                                                                                                                                       |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                         | :ref:`get_collision_mask_value<class_CollisionObject3D_method_get_collision_mask_value>` **(** :ref:`int<class_int>` layer_number **)** |const|                                                                                                                                         |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                           | :ref:`get_rid<class_CollisionObject3D_method_get_rid>` **(** **)** |const|                                                                                                                                                                                                              |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedInt32Array<class_PackedInt32Array>` | :ref:`get_shape_owners<class_CollisionObject3D_method_get_shape_owners>` **(** **)**                                                                                                                                                                                                    |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                         | :ref:`is_shape_owner_disabled<class_CollisionObject3D_method_is_shape_owner_disabled>` **(** :ref:`int<class_int>` owner_id **)** |const|                                                                                                                                               |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`remove_shape_owner<class_CollisionObject3D_method_remove_shape_owner>` **(** :ref:`int<class_int>` owner_id **)**                                                                                                                                                                 |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`set_collision_layer_value<class_CollisionObject3D_method_set_collision_layer_value>` **(** :ref:`int<class_int>` layer_number, :ref:`bool<class_bool>` value **)**                                                                                                                |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`set_collision_mask_value<class_CollisionObject3D_method_set_collision_mask_value>` **(** :ref:`int<class_int>` layer_number, :ref:`bool<class_bool>` value **)**                                                                                                                  |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                           | :ref:`shape_find_owner<class_CollisionObject3D_method_shape_find_owner>` **(** :ref:`int<class_int>` shape_index **)** |const|                                                                                                                                                          |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`shape_owner_add_shape<class_CollisionObject3D_method_shape_owner_add_shape>` **(** :ref:`int<class_int>` owner_id, :ref:`Shape3D<class_Shape3D>` shape **)**                                                                                                                      |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`shape_owner_clear_shapes<class_CollisionObject3D_method_shape_owner_clear_shapes>` **(** :ref:`int<class_int>` owner_id **)**                                                                                                                                                     |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Object<class_Object>`                     | :ref:`shape_owner_get_owner<class_CollisionObject3D_method_shape_owner_get_owner>` **(** :ref:`int<class_int>` owner_id **)** |const|                                                                                                                                                   |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Shape3D<class_Shape3D>`                   | :ref:`shape_owner_get_shape<class_CollisionObject3D_method_shape_owner_get_shape>` **(** :ref:`int<class_int>` owner_id, :ref:`int<class_int>` shape_id **)** |const|                                                                                                                   |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                           | :ref:`shape_owner_get_shape_count<class_CollisionObject3D_method_shape_owner_get_shape_count>` **(** :ref:`int<class_int>` owner_id **)** |const|                                                                                                                                       |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                           | :ref:`shape_owner_get_shape_index<class_CollisionObject3D_method_shape_owner_get_shape_index>` **(** :ref:`int<class_int>` owner_id, :ref:`int<class_int>` shape_id **)** |const|                                                                                                       |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Transform3D<class_Transform3D>`           | :ref:`shape_owner_get_transform<class_CollisionObject3D_method_shape_owner_get_transform>` **(** :ref:`int<class_int>` owner_id **)** |const|                                                                                                                                           |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`shape_owner_remove_shape<class_CollisionObject3D_method_shape_owner_remove_shape>` **(** :ref:`int<class_int>` owner_id, :ref:`int<class_int>` shape_id **)**                                                                                                                     |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`shape_owner_set_disabled<class_CollisionObject3D_method_shape_owner_set_disabled>` **(** :ref:`int<class_int>` owner_id, :ref:`bool<class_bool>` disabled **)**                                                                                                                   |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`shape_owner_set_transform<class_CollisionObject3D_method_shape_owner_set_transform>` **(** :ref:`int<class_int>` owner_id, :ref:`Transform3D<class_Transform3D>` transform **)**                                                                                                  |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Signals
 -------
@@ -98,7 +104,9 @@ Emitted when the object receives an unhandled :ref:`InputEvent<class_InputEvent>
 
 - **mouse_entered** **(** **)**
 
-Emitted when the mouse pointer enters any of this object's shapes.
+Emitted when the mouse pointer enters any of this object's shapes. Requires :ref:`input_ray_pickable<class_CollisionObject3D_property_input_ray_pickable>` to be ``true`` and at least one :ref:`collision_layer<class_CollisionObject3D_property_collision_layer>` bit to be set.
+
+\ **Note:** Due to the lack of continuous collision detection, this signal may not be emitted in the expected order if the mouse moves fast enough and the :ref:`CollisionObject2D<class_CollisionObject2D>`'s area is small. This signal may also not be emitted if another :ref:`CollisionObject2D<class_CollisionObject2D>` is overlapping the :ref:`CollisionObject2D<class_CollisionObject2D>` in question.
 
 ----
 
@@ -106,7 +114,9 @@ Emitted when the mouse pointer enters any of this object's shapes.
 
 - **mouse_exited** **(** **)**
 
-Emitted when the mouse pointer exits all this object's shapes.
+Emitted when the mouse pointer exits all this object's shapes. Requires :ref:`input_ray_pickable<class_CollisionObject3D_property_input_ray_pickable>` to be ``true`` and at least one :ref:`collision_layer<class_CollisionObject3D_property_collision_layer>` bit to be set.
+
+\ **Note:** Due to the lack of continuous collision detection, this signal may not be emitted in the expected order if the mouse moves fast enough and the :ref:`CollisionObject2D<class_CollisionObject2D>`'s area is small. This signal may also not be emitted if another :ref:`CollisionObject2D<class_CollisionObject2D>` is overlapping the :ref:`CollisionObject2D<class_CollisionObject2D>` in question.
 
 Enumerations
 ------------
@@ -170,6 +180,22 @@ The physics layers this CollisionObject3D **scans**. Collision objects can scan
 
 ----
 
+.. _class_CollisionObject3D_property_collision_priority:
+
+- :ref:`float<class_float>` **collision_priority**
+
++-----------+-------------------------------+
+| *Default* | ``1.0``                       |
++-----------+-------------------------------+
+| *Setter*  | set_collision_priority(value) |
++-----------+-------------------------------+
+| *Getter*  | get_collision_priority()      |
++-----------+-------------------------------+
+
+The priority used to solve colliding when occurring penetration. The higher the priority is, the lower the penetration into the object will be. This can for example be used to prevent the player from breaking through the boundaries of a level.
+
+----
+
 .. _class_CollisionObject3D_property_disable_mode:
 
 - :ref:`DisableMode<enum_CollisionObject3D_DisableMode>` **disable_mode**
@@ -225,6 +251,24 @@ Method Descriptions
 
 Receives unhandled :ref:`InputEvent<class_InputEvent>`\ s. ``position`` is the location in world space of the mouse pointer on the surface of the shape with index ``shape_idx`` and ``normal`` is the normal vector of the surface at that point. Connect to the :ref:`input_event<class_CollisionObject3D_signal_input_event>` signal to easily pick up these events.
 
+\ **Note:** :ref:`_input_event<class_CollisionObject3D_method__input_event>` requires :ref:`input_ray_pickable<class_CollisionObject3D_property_input_ray_pickable>` to be ``true`` and at least one :ref:`collision_layer<class_CollisionObject3D_property_collision_layer>` bit to be set.
+
+----
+
+.. _class_CollisionObject3D_method__mouse_enter:
+
+- void **_mouse_enter** **(** **)** |virtual|
+
+Called when the mouse pointer enters any of this object's shapes. Requires :ref:`input_ray_pickable<class_CollisionObject3D_property_input_ray_pickable>` to be ``true`` and at least one :ref:`collision_layer<class_CollisionObject3D_property_collision_layer>` bit to be set. Note that moving between different shapes within a single ``CollisionObject3D`` won't cause this function to be called.
+
+----
+
+.. _class_CollisionObject3D_method__mouse_exit:
+
+- void **_mouse_exit** **(** **)** |virtual|
+
+Called when the mouse pointer exits all this object's shapes. Requires :ref:`input_ray_pickable<class_CollisionObject3D_property_input_ray_pickable>` to be ``true`` and at least one :ref:`collision_layer<class_CollisionObject3D_property_collision_layer>` bit to be set. Note that moving between different shapes within a single ``CollisionObject3D`` won't cause this function to be called.
+
 ----
 
 .. _class_CollisionObject3D_method_create_shape_owner:
@@ -261,7 +305,7 @@ Returns the object's :ref:`RID<class_RID>`.
 
 .. _class_CollisionObject3D_method_get_shape_owners:
 
-- :ref:`Array<class_Array>` **get_shape_owners** **(** **)**
+- :ref:`PackedInt32Array<class_PackedInt32Array>` **get_shape_owners** **(** **)**
 
 Returns an :ref:`Array<class_Array>` of ``owner_id`` identifiers. You can use these ids in other methods that take ``owner_id`` as an argument.
 

+ 3 - 1
classes/class_collisionshape2d.rst

@@ -17,7 +17,9 @@ Node that represents collision shape data in 2D space.
 Description
 -----------
 
-Editor facility for creating and editing collision shapes in 2D space. You can use this node to represent all sorts of collision shapes, for example, add this to an :ref:`Area2D<class_Area2D>` to give it a detection shape, or add it to a :ref:`PhysicsBody2D<class_PhysicsBody2D>` to create a solid object. **IMPORTANT**: this is an Editor-only helper to create shapes, use :ref:`CollisionObject2D.shape_owner_get_shape<class_CollisionObject2D_method_shape_owner_get_shape>` to get the actual shape.
+Editor facility for creating and editing collision shapes in 2D space. Set the :ref:`shape<class_CollisionShape2D_property_shape>` property to configure the shape. **IMPORTANT**: this is an Editor-only helper to create shapes, use :ref:`CollisionObject2D.shape_owner_get_shape<class_CollisionObject2D_method_shape_owner_get_shape>` to get the actual shape.
+
+You can use this node to represent all sorts of collision shapes, for example, add this to an :ref:`Area2D<class_Area2D>` to give it a detection shape, or add it to a :ref:`PhysicsBody2D<class_PhysicsBody2D>` to create a solid object.
 
 Tutorials
 ---------

+ 3 - 1
classes/class_collisionshape3d.rst

@@ -17,7 +17,9 @@ Node that represents collision shape data in 3D space.
 Description
 -----------
 
-Editor facility for creating and editing collision shapes in 3D space. You can use this node to represent all sorts of collision shapes, for example, add this to an :ref:`Area3D<class_Area3D>` to give it a detection shape, or add it to a :ref:`PhysicsBody3D<class_PhysicsBody3D>` to create a solid object. **IMPORTANT**: this is an Editor-only helper to create shapes, use :ref:`CollisionObject3D.shape_owner_get_shape<class_CollisionObject3D_method_shape_owner_get_shape>` to get the actual shape.
+Editor facility for creating and editing collision shapes in 3D space. Set the :ref:`shape<class_CollisionShape3D_property_shape>` property to configure the shape. **IMPORTANT**: this is an Editor-only helper to create shapes, use :ref:`CollisionObject3D.shape_owner_get_shape<class_CollisionObject3D_method_shape_owner_get_shape>` to get the actual shape.
+
+You can use this node to represent all sorts of collision shapes, for example, add this to an :ref:`Area3D<class_Area3D>` to give it a detection shape, or add it to a :ref:`PhysicsBody3D<class_PhysicsBody3D>` to create a solid object.
 
 Tutorials
 ---------

+ 3 - 3
classes/class_color.rst

@@ -1068,7 +1068,7 @@ Constructs a color from an `HSV profile <https://en.wikipedia.org/wiki/HSL_and_H
 
 - :ref:`Color<class_Color>` **from_ok_hsl** **(** :ref:`float<class_float>` h, :ref:`float<class_float>` s, :ref:`float<class_float>` l, :ref:`float<class_float>` alpha=1.0 **)** |static|
 
-Constructs a color from an `OK HSL profile <https://bottosson.github.io/posts/colorpicker/>`__. ``h`` (hue), ``s`` (saturation), and ``v`` (value) are typically between 0 and 1.
+Constructs a color from an `OK HSL profile <https://bottosson.github.io/posts/colorpicker/>`__. ``h`` (hue), ``s`` (saturation), and ``l`` (lightness) are typically between 0 and 1.
 
 
 .. tabs::
@@ -1145,7 +1145,7 @@ This is useful when determining light or dark color. Colors with a luminance sma
 
 Returns a new color from ``rgba``, an HTML hexadecimal color string. ``rgba`` is not case sensitive, and may be prefixed with a '#' character.
 
-\ ``rgba`` must be a valid three-digit or six-digit hexadecimal color string, and may contain an alpha channel value. If ``rgba`` does not contain an alpha channel value, an alpha channel value of 1.0 is applied.
+``rgba`` must be a valid three-digit or six-digit hexadecimal color string, and may contain an alpha channel value. If ``rgba`` does not contain an alpha channel value, an alpha channel value of 1.0 is applied.
 
 If ``rgba`` is invalid a Color(0.0, 0.0, 0.0, 1.0) is returned.
 
@@ -1228,7 +1228,7 @@ Returns the inverted color ``(1 - r, 1 - g, 1 - b, a)``.
 
 - :ref:`bool<class_bool>` **is_equal_approx** **(** :ref:`Color<class_Color>` to **)** |const|
 
-Returns ``true`` if this color and ``color`` are approximately equal, by running :ref:`@GlobalScope.is_equal_approx<class_@GlobalScope_method_is_equal_approx>` on each component.
+Returns ``true`` if this color and ``to`` are approximately equal, by running :ref:`@GlobalScope.is_equal_approx<class_@GlobalScope_method_is_equal_approx>` on each component.
 
 ----
 

+ 3 - 1
classes/class_concavepolygonshape2d.rst

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

+ 3 - 1
classes/class_concavepolygonshape3d.rst

@@ -19,10 +19,12 @@ Description
 
 3D concave polygon shape resource (also called "trimesh") to be added as a *direct* child of a :ref:`PhysicsBody3D<class_PhysicsBody3D>` or :ref:`Area3D<class_Area3D>` using a :ref:`CollisionShape3D<class_CollisionShape3D>` node. This shape is created by feeding a list of triangles. Despite its name, ``ConcavePolygonShape3D`` can also store convex polygon shapes. However, unlike :ref:`ConvexPolygonShape3D<class_ConvexPolygonShape3D>`, ``ConcavePolygonShape3D`` is *not* limited to storing convex shapes exclusively.
 
-\ **Note:** When used for collision, ``ConcavePolygonShape3D`` is intended to work with static :ref:`PhysicsBody3D<class_PhysicsBody3D>` nodes like :ref:`StaticBody3D<class_StaticBody3D>` and will not work with :ref:`CharacterBody3D<class_CharacterBody3D>` or :ref:`RigidDynamicBody3D<class_RigidDynamicBody3D>` with a mode other than Static.
+\ **Note:** When used for collision, ``ConcavePolygonShape3D`` is intended to work with static :ref:`PhysicsBody3D<class_PhysicsBody3D>` nodes like :ref:`StaticBody3D<class_StaticBody3D>` and will not work with :ref:`CharacterBody3D<class_CharacterBody3D>` or :ref:`RigidBody3D<class_RigidBody3D>` with a mode other than Static.
 
 \ **Performance:** Due to its complexity, ``ConcavePolygonShape3D`` is the slowest collision shape to check collisions against. Its use should generally be limited to level geometry. For convex geometry, using :ref:`ConvexPolygonShape3D<class_ConvexPolygonShape3D>` will perform better. For dynamic physics bodies that need concave collision, several :ref:`ConvexPolygonShape3D<class_ConvexPolygonShape3D>`\ s can be used to represent its collision by using convex decomposition; see :ref:`ConvexPolygonShape3D<class_ConvexPolygonShape3D>`'s documentation for instructions. However, consider using primitive collision shapes such as :ref:`SphereShape3D<class_SphereShape3D>` or :ref:`BoxShape3D<class_BoxShape3D>` first.
 
+\ **Warning:** Using this shape for an :ref:`Area3D<class_Area3D>` (via a :ref:`CollisionShape3D<class_CollisionShape3D>` node, created e.g. by using the *Create Trimesh Collision Sibling* option in the *Mesh* menu that appears when selecting a :ref:`MeshInstance3D<class_MeshInstance3D>` node) may give unexpected results: the area will only detect collisions with the triangle faces in the ``ConcavePolygonShape3D`` (and not with any "inside" of the shape, for example); moreover it will only detect all such collisions if :ref:`backface_collision<class_ConcavePolygonShape3D_property_backface_collision>` is ``true``.
+
 Tutorials
 ---------
 

+ 25 - 17
classes/class_conetwistjoint3d.rst

@@ -26,17 +26,17 @@ Once the Bodies swing, the twist axis is calculated as the middle of the x-axes
 Properties
 ----------
 
-+---------------------------+---------------------------------------------------------------+-----------+
-| :ref:`float<class_float>` | :ref:`bias<class_ConeTwistJoint3D_property_bias>`             | ``0.3``   |
-+---------------------------+---------------------------------------------------------------+-----------+
-| :ref:`float<class_float>` | :ref:`relaxation<class_ConeTwistJoint3D_property_relaxation>` | ``1.0``   |
-+---------------------------+---------------------------------------------------------------+-----------+
-| :ref:`float<class_float>` | :ref:`softness<class_ConeTwistJoint3D_property_softness>`     | ``0.8``   |
-+---------------------------+---------------------------------------------------------------+-----------+
-| :ref:`float<class_float>` | :ref:`swing_span<class_ConeTwistJoint3D_property_swing_span>` | ``45.0``  |
-+---------------------------+---------------------------------------------------------------+-----------+
-| :ref:`float<class_float>` | :ref:`twist_span<class_ConeTwistJoint3D_property_twist_span>` | ``180.0`` |
-+---------------------------+---------------------------------------------------------------+-----------+
++---------------------------+---------------------------------------------------------------+--------------+
+| :ref:`float<class_float>` | :ref:`bias<class_ConeTwistJoint3D_property_bias>`             | ``0.3``      |
++---------------------------+---------------------------------------------------------------+--------------+
+| :ref:`float<class_float>` | :ref:`relaxation<class_ConeTwistJoint3D_property_relaxation>` | ``1.0``      |
++---------------------------+---------------------------------------------------------------+--------------+
+| :ref:`float<class_float>` | :ref:`softness<class_ConeTwistJoint3D_property_softness>`     | ``0.8``      |
++---------------------------+---------------------------------------------------------------+--------------+
+| :ref:`float<class_float>` | :ref:`swing_span<class_ConeTwistJoint3D_property_swing_span>` | ``0.785398`` |
++---------------------------+---------------------------------------------------------------+--------------+
+| :ref:`float<class_float>` | :ref:`twist_span<class_ConeTwistJoint3D_property_twist_span>` | ``3.14159``  |
++---------------------------+---------------------------------------------------------------+--------------+
 
 Methods
 -------
@@ -145,9 +145,13 @@ The ease with which the joint starts to twist. If it's too low, it takes more fo
 
 - :ref:`float<class_float>` **swing_span**
 
-+-----------+----------+
-| *Default* | ``45.0`` |
-+-----------+----------+
++-----------+------------------+
+| *Default* | ``0.785398``     |
++-----------+------------------+
+| *Setter*  | set_param(value) |
++-----------+------------------+
+| *Getter*  | get_param()      |
++-----------+------------------+
 
 Swing is rotation from side to side, around the axis perpendicular to the twist axis.
 
@@ -163,9 +167,13 @@ If below 0.05, this behavior is locked.
 
 - :ref:`float<class_float>` **twist_span**
 
-+-----------+-----------+
-| *Default* | ``180.0`` |
-+-----------+-----------+
++-----------+------------------+
+| *Default* | ``3.14159``      |
++-----------+------------------+
+| *Setter*  | set_param(value) |
++-----------+------------------+
+| *Getter*  | get_param()      |
++-----------+------------------+
 
 Twist is the rotation around the twist axis, this value defined how far the joint can twist.
 

+ 72 - 54
classes/class_control.rst

@@ -12,7 +12,7 @@ Control
 
 **Inherits:** :ref:`CanvasItem<class_CanvasItem>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
-**Inherited By:** :ref:`BaseButton<class_BaseButton>`, :ref:`ColorRect<class_ColorRect>`, :ref:`Container<class_Container>`, :ref:`EditorDebuggerPlugin<class_EditorDebuggerPlugin>`, :ref:`GraphEdit<class_GraphEdit>`, :ref:`ItemList<class_ItemList>`, :ref:`Label<class_Label>`, :ref:`LineEdit<class_LineEdit>`, :ref:`NinePatchRect<class_NinePatchRect>`, :ref:`Panel<class_Panel>`, :ref:`Range<class_Range>`, :ref:`ReferenceRect<class_ReferenceRect>`, :ref:`RichTextLabel<class_RichTextLabel>`, :ref:`Separator<class_Separator>`, :ref:`TabBar<class_TabBar>`, :ref:`TextEdit<class_TextEdit>`, :ref:`TextureRect<class_TextureRect>`, :ref:`Tree<class_Tree>`, :ref:`VideoStreamPlayer<class_VideoStreamPlayer>`
+**Inherited By:** :ref:`BaseButton<class_BaseButton>`, :ref:`ColorRect<class_ColorRect>`, :ref:`Container<class_Container>`, :ref:`EditorDebuggerPlugin<class_EditorDebuggerPlugin>`, :ref:`GraphEdit<class_GraphEdit>`, :ref:`ItemList<class_ItemList>`, :ref:`Label<class_Label>`, :ref:`LineEdit<class_LineEdit>`, :ref:`MenuBar<class_MenuBar>`, :ref:`NinePatchRect<class_NinePatchRect>`, :ref:`Panel<class_Panel>`, :ref:`Range<class_Range>`, :ref:`ReferenceRect<class_ReferenceRect>`, :ref:`RichTextLabel<class_RichTextLabel>`, :ref:`Separator<class_Separator>`, :ref:`TabBar<class_TabBar>`, :ref:`TextEdit<class_TextEdit>`, :ref:`TextureRect<class_TextureRect>`, :ref:`Tree<class_Tree>`, :ref:`VideoStreamPlayer<class_VideoStreamPlayer>`
 
 All user interface nodes inherit from Control. A control's anchors and offsets adapt its position and size relative to its parent.
 
@@ -88,8 +88,6 @@ Properties
 +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
 | :ref:`GrowDirection<enum_Control_GrowDirection>`     | :ref:`grow_vertical<class_Control_property_grow_vertical>`                                   | ``1``             |
 +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
-| :ref:`String<class_String>`                          | :ref:`hint_tooltip<class_Control_property_hint_tooltip>`                                     | ``""``            |
-+------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
 | :ref:`LayoutDirection<enum_Control_LayoutDirection>` | :ref:`layout_direction<class_Control_property_layout_direction>`                             | ``0``             |
 +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
 | :ref:`CursorShape<enum_Control_CursorShape>`         | :ref:`mouse_default_cursor_shape<class_Control_property_mouse_default_cursor_shape>`         | ``0``             |
@@ -126,6 +124,8 @@ Properties
 +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
 | :ref:`StringName<class_StringName>`                  | :ref:`theme_type_variation<class_Control_property_theme_type_variation>`                     | ``&""``           |
 +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`String<class_String>`                          | :ref:`tooltip_text<class_Control_property_tooltip_text>`                                     | ``""``            |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
 
 Methods
 -------
@@ -145,7 +145,7 @@ Methods
 +----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Object<class_Object>`                  | :ref:`_make_custom_tooltip<class_Control_method__make_custom_tooltip>` **(** :ref:`String<class_String>` for_text **)** |virtual| |const|                                                                                                                          |
 +----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                    | :ref:`_structured_text_parser<class_Control_method__structured_text_parser>` **(** :ref:`Array<class_Array>` args, :ref:`String<class_String>` text **)** |virtual| |const|                                                                                        |
+| :ref:`Vector2i[]<class_Vector2i>`            | :ref:`_structured_text_parser<class_Control_method__structured_text_parser>` **(** :ref:`Array<class_Array>` args, :ref:`String<class_String>` text **)** |virtual| |const|                                                                                        |
 +----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                         | :ref:`accept_event<class_Control_method_accept_event>` **(** **)**                                                                                                                                                                                                 |
 +----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -383,6 +383,8 @@ Emitted when one of the size flags changes. See :ref:`size_flags_horizontal<clas
 
 - **theme_changed** **(** **)**
 
+Emitted when the :ref:`NOTIFICATION_THEME_CHANGED<class_Control_constant_NOTIFICATION_THEME_CHANGED>` notification is sent.
+
 Enumerations
 ------------
 
@@ -725,7 +727,17 @@ Constants
 
 - **NOTIFICATION_FOCUS_EXIT** = **44** --- Sent when the node loses focus.
 
-- **NOTIFICATION_THEME_CHANGED** = **45** --- Sent when the node's :ref:`theme<class_Control_property_theme>` changes, right before Godot redraws the control. Happens when you call one of the ``add_theme_*_override`` methods.
+- **NOTIFICATION_THEME_CHANGED** = **45** --- Sent when the node needs to refresh its theme items. This happens in one of the following cases:
+
+- The :ref:`theme<class_Control_property_theme>` property is changed on this node or any of its ancestors.
+
+- The :ref:`theme_type_variation<class_Control_property_theme_type_variation>` property is changed on this node.
+
+- One of the node's theme property overrides is changed.
+
+- The node enters the scene tree.
+
+\ **Note:** As an optimization, this notification won't be sent from changes that occur while this node is outside of the scene tree. Instead, all of the theme item updates can be applied at once when the node enters the scene tree.
 
 - **NOTIFICATION_SCROLL_BEGIN** = **47** --- Sent when this node is inside a :ref:`ScrollContainer<class_ScrollContainer>` which has begun being scrolled.
 
@@ -1000,45 +1012,6 @@ Controls the direction on the horizontal axis in which the control should grow i
 
 Controls the direction on the vertical axis in which the control should grow if its vertical minimum size is changed to be greater than its current size, as the control always has to be at least the minimum size.
 
-----
-
-.. _class_Control_property_hint_tooltip:
-
-- :ref:`String<class_String>` **hint_tooltip**
-
-+-----------+--------------------+
-| *Default* | ``""``             |
-+-----------+--------------------+
-| *Setter*  | set_tooltip(value) |
-+-----------+--------------------+
-
-Changes the tooltip text. The tooltip appears when the user's mouse cursor stays idle over this control for a few moments, provided that the :ref:`mouse_filter<class_Control_property_mouse_filter>` property is not :ref:`MOUSE_FILTER_IGNORE<class_Control_constant_MOUSE_FILTER_IGNORE>`. You can change the time required for the tooltip to appear with ``gui/timers/tooltip_delay_sec`` option in Project Settings.
-
-The tooltip popup will use either a default implementation, or a custom one that you can provide by overriding :ref:`_make_custom_tooltip<class_Control_method__make_custom_tooltip>`. The default tooltip includes a :ref:`PopupPanel<class_PopupPanel>` and :ref:`Label<class_Label>` whose theme properties can be customized using :ref:`Theme<class_Theme>` methods with the ``"TooltipPanel"`` and ``"TooltipLabel"`` respectively. For example:
-
-
-.. tabs::
-
- .. code-tab:: gdscript
-
-    var style_box = StyleBoxFlat.new()
-    style_box.set_bg_color(Color(1, 1, 0))
-    style_box.set_border_width_all(2)
-    # We assume here that the `theme` property has been assigned a custom Theme beforehand.
-    theme.set_stylebox("panel", "TooltipPanel", style_box)
-    theme.set_color("font_color", "TooltipLabel", Color(0, 1, 1))
-
- .. code-tab:: csharp
-
-    var styleBox = new StyleBoxFlat();
-    styleBox.SetBgColor(new Color(1, 1, 0));
-    styleBox.SetBorderWidthAll(2);
-    // We assume here that the `Theme` property has been assigned a custom Theme beforehand.
-    Theme.SetStyleBox("panel", "TooltipPanel", styleBox);
-    Theme.SetColor("font_color", "TooltipLabel", new Color(0, 1, 1));
-
-
-
 ----
 
 .. _class_Control_property_layout_direction:
@@ -1239,7 +1212,7 @@ The node's rotation around its pivot, in radians. See :ref:`pivot_offset<class_C
 | *Getter*  | get_scale()       |
 +-----------+-------------------+
 
-The node's scale, relative to its :ref:`size<class_Control_property_size>`. Change this property to scale the node around its :ref:`pivot_offset<class_Control_property_pivot_offset>`. The Control's :ref:`hint_tooltip<class_Control_property_hint_tooltip>` will also scale according to this value.
+The node's scale, relative to its :ref:`size<class_Control_property_size>`. Change this property to scale the node around its :ref:`pivot_offset<class_Control_property_pivot_offset>`. The Control's :ref:`tooltip_text<class_Control_property_tooltip_text>` will also scale according to this value.
 
 \ **Note:** This property is mainly intended to be used for animation purposes. Text inside the Control will look pixelated or blurry when the Control is scaled. To support multiple resolutions in your project, use an appropriate viewport stretch mode as described in the :doc:`documentation <../tutorials/viewports/multiple_resolutions>` instead of scaling Controls individually.
 
@@ -1343,6 +1316,47 @@ When set, this property gives the highest priority to the type of the specified
 
 \ **Note:** Theme items are looked for in the tree order, from branch to root, where each ``Control`` node is checked for its :ref:`theme<class_Control_property_theme>` property. The earliest match against any type/class name is returned. The project-level Theme and the default Theme are checked last.
 
+----
+
+.. _class_Control_property_tooltip_text:
+
+- :ref:`String<class_String>` **tooltip_text**
+
++-----------+-------------------------+
+| *Default* | ``""``                  |
++-----------+-------------------------+
+| *Setter*  | set_tooltip_text(value) |
++-----------+-------------------------+
+| *Getter*  | get_tooltip_text()      |
++-----------+-------------------------+
+
+The default tooltip text. The tooltip appears when the user's mouse cursor stays idle over this control for a few moments, provided that the :ref:`mouse_filter<class_Control_property_mouse_filter>` property is not :ref:`MOUSE_FILTER_IGNORE<class_Control_constant_MOUSE_FILTER_IGNORE>`. The time required for the tooltip to appear can be changed with the ``gui/timers/tooltip_delay_sec`` option in Project Settings. See also :ref:`get_tooltip<class_Control_method_get_tooltip>`.
+
+The tooltip popup will use either a default implementation, or a custom one that you can provide by overriding :ref:`_make_custom_tooltip<class_Control_method__make_custom_tooltip>`. The default tooltip includes a :ref:`PopupPanel<class_PopupPanel>` and :ref:`Label<class_Label>` whose theme properties can be customized using :ref:`Theme<class_Theme>` methods with the ``"TooltipPanel"`` and ``"TooltipLabel"`` respectively. For example:
+
+
+.. tabs::
+
+ .. code-tab:: gdscript
+
+    var style_box = StyleBoxFlat.new()
+    style_box.set_bg_color(Color(1, 1, 0))
+    style_box.set_border_width_all(2)
+    # We assume here that the `theme` property has been assigned a custom Theme beforehand.
+    theme.set_stylebox("panel", "TooltipPanel", style_box)
+    theme.set_color("font_color", "TooltipLabel", Color(0, 1, 1))
+
+ .. code-tab:: csharp
+
+    var styleBox = new StyleBoxFlat();
+    styleBox.SetBgColor(new Color(1, 1, 0));
+    styleBox.SetBorderWidthAll(2);
+    // We assume here that the `Theme` property has been assigned a custom Theme beforehand.
+    Theme.SetStyleBox("panel", "TooltipPanel", styleBox);
+    Theme.SetColor("font_color", "TooltipLabel", new Color(0, 1, 1));
+
+
+
 Method Descriptions
 -------------------
 
@@ -1350,7 +1364,7 @@ Method Descriptions
 
 - :ref:`bool<class_bool>` **_can_drop_data** **(** :ref:`Vector2<class_Vector2>` at_position, :ref:`Variant<class_Variant>` data **)** |virtual| |const|
 
-Godot calls this method to test if ``data`` from a control's :ref:`_get_drag_data<class_Control_method__get_drag_data>` can be dropped at ``position``. ``position`` is local to this control.
+Godot calls this method to test if ``data`` from a control's :ref:`_get_drag_data<class_Control_method__get_drag_data>` can be dropped at ``at_position``. ``at_position`` is local to this control.
 
 This method should only be used to test the data. Process the data in :ref:`_drop_data<class_Control_method__drop_data>`.
 
@@ -1381,7 +1395,7 @@ This method should only be used to test the data. Process the data in :ref:`_dro
 
 - void **_drop_data** **(** :ref:`Vector2<class_Vector2>` at_position, :ref:`Variant<class_Variant>` data **)** |virtual|
 
-Godot calls this method to pass you the ``data`` from a control's :ref:`_get_drag_data<class_Control_method__get_drag_data>` result. Godot first calls :ref:`_can_drop_data<class_Control_method__can_drop_data>` to test if ``data`` is allowed to drop at ``position`` where ``position`` is local to this control.
+Godot calls this method to pass you the ``data`` from a control's :ref:`_get_drag_data<class_Control_method__get_drag_data>` result. Godot first calls :ref:`_can_drop_data<class_Control_method__can_drop_data>` to test if ``data`` is allowed to drop at ``at_position`` where ``at_position`` is local to this control.
 
 
 .. tabs::
@@ -1412,7 +1426,7 @@ Godot calls this method to pass you the ``data`` from a control's :ref:`_get_dra
 
 - :ref:`Variant<class_Variant>` **_get_drag_data** **(** :ref:`Vector2<class_Vector2>` at_position **)** |virtual| |const|
 
-Godot calls this method to get data that can be dragged and dropped onto controls that expect drop data. Returns ``null`` if there is no data to drag. Controls that want to receive drop data should implement :ref:`_can_drop_data<class_Control_method__can_drop_data>` and :ref:`_drop_data<class_Control_method__drop_data>`. ``position`` is local to this control. Drag may be forced with :ref:`force_drag<class_Control_method_force_drag>`.
+Godot calls this method to get data that can be dragged and dropped onto controls that expect drop data. Returns ``null`` if there is no data to drag. Controls that want to receive drop data should implement :ref:`_can_drop_data<class_Control_method__can_drop_data>` and :ref:`_drop_data<class_Control_method__drop_data>`. ``at_position`` is local to this control. Drag may be forced with :ref:`force_drag<class_Control_method_force_drag>`.
 
 A preview that will follow the mouse that should represent the data can be set with :ref:`set_drag_preview<class_Control_method_set_drag_preview>`. A good time to set the preview is in this method.
 
@@ -1505,7 +1519,7 @@ The event won't trigger if:
 
 - :ref:`bool<class_bool>` **_has_point** **(** :ref:`Vector2<class_Vector2>` position **)** |virtual| |const|
 
-Virtual method to be implemented by the user. Returns whether the given ``point`` is inside this control.
+Virtual method to be implemented by the user. Returns whether the given ``position`` is inside this control.
 
 If not overridden, default behavior is checking if the point is within control's Rect.
 
@@ -1517,11 +1531,11 @@ If not overridden, default behavior is checking if the point is within control's
 
 - :ref:`Object<class_Object>` **_make_custom_tooltip** **(** :ref:`String<class_String>` for_text **)** |virtual| |const|
 
-Virtual method to be implemented by the user. Returns a ``Control`` node that should be used as a tooltip instead of the default one. The ``for_text`` includes the contents of the :ref:`hint_tooltip<class_Control_property_hint_tooltip>` property.
+Virtual method to be implemented by the user. Returns a ``Control`` node that should be used as a tooltip instead of the default one. The ``for_text`` includes the contents of the :ref:`tooltip_text<class_Control_property_tooltip_text>` property.
 
 The returned node must be of type ``Control`` or Control-derived. It can have child nodes of any type. It is freed when the tooltip disappears, so make sure you always provide a new instance (if you want to use a pre-existing node from your scene tree, you can duplicate it and pass the duplicated instance). When ``null`` or a non-Control node is returned, the default tooltip will be used instead.
 
-The returned node will be added as child to a :ref:`PopupPanel<class_PopupPanel>`, so you should only provide the contents of that panel. That :ref:`PopupPanel<class_PopupPanel>` can be themed using :ref:`Theme.set_stylebox<class_Theme_method_set_stylebox>` for the type ``"TooltipPanel"`` (see :ref:`hint_tooltip<class_Control_property_hint_tooltip>` for an example).
+The returned node will be added as child to a :ref:`PopupPanel<class_PopupPanel>`, so you should only provide the contents of that panel. That :ref:`PopupPanel<class_PopupPanel>` can be themed using :ref:`Theme.set_stylebox<class_Theme_method_set_stylebox>` for the type ``"TooltipPanel"`` (see :ref:`tooltip_text<class_Control_property_tooltip_text>` for an example).
 
 \ **Note:** The tooltip is shrunk to minimal size. If you want to ensure it's fully visible, you might want to set its :ref:`custom_minimum_size<class_Control_property_custom_minimum_size>` to some non-zero value.
 
@@ -1577,7 +1591,7 @@ Example of usage with a custom scene instance:
 
 .. _class_Control_method__structured_text_parser:
 
-- :ref:`Array<class_Array>` **_structured_text_parser** **(** :ref:`Array<class_Array>` args, :ref:`String<class_String>` text **)** |virtual| |const|
+- :ref:`Vector2i[]<class_Vector2i>` **_structured_text_parser** **(** :ref:`Array<class_Array>` args, :ref:`String<class_String>` text **)** |virtual| |const|
 
 User defined BiDi algorithm override function.
 
@@ -1871,7 +1885,7 @@ Example usage for showing a popup:
 
 Returns a :ref:`Color<class_Color>` from the first matching :ref:`Theme<class_Theme>` in the tree if that :ref:`Theme<class_Theme>` has a color item with the specified ``name`` and ``theme_type``. If ``theme_type`` is omitted the class name of the current control is used as the type, or :ref:`theme_type_variation<class_Control_property_theme_type_variation>` if it is defined. If the type is a class name its parent classes are also checked, in order of inheritance. If the type is a variation its base types are checked, in order of dependency, then the control's class name and its parent classes are checked.
 
-For the current control its local overrides are considered first (see :ref:`add_theme_color_override<class_Control_method_add_theme_color_override>`), then its assigned :ref:`theme<class_Control_property_theme>`. After the current control, each parent control and its assigned :ref:`theme<class_Control_property_theme>` are considered; controls without a :ref:`theme<class_Control_property_theme>` assigned are skipped. If no matching :ref:`Theme<class_Theme>` is found in the tree, a custom project :ref:`Theme<class_Theme>` (see :ref:`ProjectSettings.gui/theme/custom<class_ProjectSettings_property_gui/theme/custom>`) and the default :ref:`Theme<class_Theme>` are used.
+For the current control its local overrides are considered first (see :ref:`add_theme_color_override<class_Control_method_add_theme_color_override>`), then its assigned :ref:`theme<class_Control_property_theme>`. After the current control, each parent control and its assigned :ref:`theme<class_Control_property_theme>` are considered; controls without a :ref:`theme<class_Control_property_theme>` assigned are skipped. If no matching :ref:`Theme<class_Theme>` is found in the tree, the custom project :ref:`Theme<class_Theme>` (see :ref:`ProjectSettings.gui/theme/custom<class_ProjectSettings_property_gui/theme/custom>`) and the default :ref:`Theme<class_Theme>` are used (see :ref:`ThemeDB<class_ThemeDB>`).
 
 
 .. tabs::
@@ -1982,7 +1996,9 @@ See :ref:`get_theme_color<class_Control_method_get_theme_color>` for details.
 
 - :ref:`String<class_String>` **get_tooltip** **(** :ref:`Vector2<class_Vector2>` at_position=Vector2(0, 0) **)** |const|
 
-Returns the tooltip, which will appear when the cursor is resting over this control. See :ref:`hint_tooltip<class_Control_property_hint_tooltip>`.
+Returns the tooltip text ``at_position`` in local coordinates, which will typically appear when the cursor is resting over this control. By default, it returns :ref:`tooltip_text<class_Control_property_tooltip_text>`.
+
+\ **Note:** This method can be overriden to customise its behaviour. If this method returns an empty :ref:`String<class_String>`, no tooltip is displayed.
 
 ----
 
@@ -2017,6 +2033,8 @@ Creates an :ref:`InputEventMouseButton<class_InputEventMouseButton>` that attemp
 
 Steal the focus from another control and become the focused control (see :ref:`focus_mode<class_Control_property_focus_mode>`).
 
+\ **Note**: Using this method together with :ref:`Callable.call_deferred<class_Callable_method_call_deferred>` makes it more reliable, especially when called inside :ref:`Node._ready<class_Node_method__ready>`.
+
 ----
 
 .. _class_Control_method_has_focus:

+ 4 - 4
classes/class_cpuparticles2d.rst

@@ -114,7 +114,7 @@ Properties
 +---------------------------------------------------------+-------------------------------------------------------------------------------------+-----------------------+
 | :ref:`float<class_float>`                               | :ref:`linear_accel_min<class_CPUParticles2D_property_linear_accel_min>`             | ``0.0``               |
 +---------------------------------------------------------+-------------------------------------------------------------------------------------+-----------------------+
-| :ref:`bool<class_bool>`                                 | :ref:`local_coords<class_CPUParticles2D_property_local_coords>`                     | ``true``              |
+| :ref:`bool<class_bool>`                                 | :ref:`local_coords<class_CPUParticles2D_property_local_coords>`                     | ``false``             |
 +---------------------------------------------------------+-------------------------------------------------------------------------------------+-----------------------+
 | :ref:`bool<class_bool>`                                 | :ref:`one_shot<class_CPUParticles2D_property_one_shot>`                             | ``false``             |
 +---------------------------------------------------------+-------------------------------------------------------------------------------------+-----------------------+
@@ -935,14 +935,14 @@ Each particle's linear acceleration will vary along this :ref:`Curve<class_Curve
 - :ref:`bool<class_bool>` **local_coords**
 
 +-----------+----------------------------------+
-| *Default* | ``true``                         |
+| *Default* | ``false``                        |
 +-----------+----------------------------------+
 | *Setter*  | set_use_local_coordinates(value) |
 +-----------+----------------------------------+
 | *Getter*  | get_use_local_coordinates()      |
 +-----------+----------------------------------+
 
-If ``true``, particles use the parent node's coordinate space. If ``false``, they use global coordinates.
+If ``true``, particles use the parent node's coordinate space (known as local coordinates). This will cause particles to move and rotate along the ``CPUParticles2D`` node (and its parents) when it is moved or rotated. If ``false``, particles use global coordinates; they will not move or rotate along the ``CPUParticles2D`` node (and its parents) when it is moved or rotated.
 
 ----
 
@@ -1267,7 +1267,7 @@ Method Descriptions
 
 - void **convert_from_particles** **(** :ref:`Node<class_Node>` particles **)**
 
-Sets this node's properties to match a given :ref:`GPUParticles2D<class_GPUParticles2D>` node with an assigned :ref:`ParticlesMaterial<class_ParticlesMaterial>`.
+Sets this node's properties to match a given :ref:`GPUParticles2D<class_GPUParticles2D>` node with an assigned :ref:`ParticleProcessMaterial<class_ParticleProcessMaterial>`.
 
 ----
 

+ 13 - 5
classes/class_cpuparticles3d.rst

@@ -119,7 +119,7 @@ Properties
 +---------------------------------------------------------+---------------------------------------------------------------------------------------------+-------------------------+
 | :ref:`float<class_float>`                               | :ref:`linear_accel_min<class_CPUParticles3D_property_linear_accel_min>`                     | ``0.0``                 |
 +---------------------------------------------------------+---------------------------------------------------------------------------------------------+-------------------------+
-| :ref:`bool<class_bool>`                                 | :ref:`local_coords<class_CPUParticles3D_property_local_coords>`                             | ``true``                |
+| :ref:`bool<class_bool>`                                 | :ref:`local_coords<class_CPUParticles3D_property_local_coords>`                             | ``false``               |
 +---------------------------------------------------------+---------------------------------------------------------------------------------------------+-------------------------+
 | :ref:`Mesh<class_Mesh>`                                 | :ref:`mesh<class_CPUParticles3D_property_mesh>`                                             |                         |
 +---------------------------------------------------------+---------------------------------------------------------------------------------------------+-------------------------+
@@ -549,7 +549,9 @@ Minimum particle animation speed.
 | *Getter*  | get_color()           |
 +-----------+-----------------------+
 
-Each particle's initial color. To have particle display color in a :ref:`BaseMaterial3D<class_BaseMaterial3D>` make sure to set :ref:`BaseMaterial3D.vertex_color_use_as_albedo<class_BaseMaterial3D_property_vertex_color_use_as_albedo>` to ``true``.
+Each particle's initial color.
+
+\ **Note:** :ref:`color<class_CPUParticles3D_property_color>` multiplies the particle mesh's vertex colors. To have a visible effect on a :ref:`BaseMaterial3D<class_BaseMaterial3D>`, :ref:`BaseMaterial3D.vertex_color_use_as_albedo<class_BaseMaterial3D_property_vertex_color_use_as_albedo>` *must* be ``true``. For a :ref:`ShaderMaterial<class_ShaderMaterial>`, ``ALBEDO *= COLOR.rgb;`` must be inserted in the shader's ``fragment()`` function. Otherwise, :ref:`color<class_CPUParticles3D_property_color>` will have no visible effect.
 
 ----
 
@@ -565,6 +567,8 @@ Each particle's initial color. To have particle display color in a :ref:`BaseMat
 
 Each particle's initial color will vary along this :ref:`GradientTexture1D<class_GradientTexture1D>` (multiplied with :ref:`color<class_CPUParticles3D_property_color>`).
 
+\ **Note:** :ref:`color_initial_ramp<class_CPUParticles3D_property_color_initial_ramp>` multiplies the particle mesh's vertex colors. To have a visible effect on a :ref:`BaseMaterial3D<class_BaseMaterial3D>`, :ref:`BaseMaterial3D.vertex_color_use_as_albedo<class_BaseMaterial3D_property_vertex_color_use_as_albedo>` *must* be ``true``. For a :ref:`ShaderMaterial<class_ShaderMaterial>`, ``ALBEDO *= COLOR.rgb;`` must be inserted in the shader's ``fragment()`` function. Otherwise, :ref:`color_initial_ramp<class_CPUParticles3D_property_color_initial_ramp>` will have no visible effect.
+
 ----
 
 .. _class_CPUParticles3D_property_color_ramp:
@@ -579,6 +583,8 @@ Each particle's initial color will vary along this :ref:`GradientTexture1D<class
 
 Each particle's color will vary along this :ref:`GradientTexture1D<class_GradientTexture1D>` over its lifetime (multiplied with :ref:`color<class_CPUParticles3D_property_color>`).
 
+\ **Note:** :ref:`color_ramp<class_CPUParticles3D_property_color_ramp>` multiplies the particle mesh's vertex colors. To have a visible effect on a :ref:`BaseMaterial3D<class_BaseMaterial3D>`, :ref:`BaseMaterial3D.vertex_color_use_as_albedo<class_BaseMaterial3D_property_vertex_color_use_as_albedo>` *must* be ``true``. For a :ref:`ShaderMaterial<class_ShaderMaterial>`, ``ALBEDO *= COLOR.rgb;`` must be inserted in the shader's ``fragment()`` function. Otherwise, :ref:`color_ramp<class_CPUParticles3D_property_color_ramp>` will have no visible effect.
+
 ----
 
 .. _class_CPUParticles3D_property_damping_curve:
@@ -687,6 +693,8 @@ The rectangle's extents if :ref:`emission_shape<class_CPUParticles3D_property_em
 
 Sets the :ref:`Color<class_Color>`\ s to modulate particles by when using :ref:`EMISSION_SHAPE_POINTS<class_CPUParticles3D_constant_EMISSION_SHAPE_POINTS>` or :ref:`EMISSION_SHAPE_DIRECTED_POINTS<class_CPUParticles3D_constant_EMISSION_SHAPE_DIRECTED_POINTS>`.
 
+\ **Note:** :ref:`emission_colors<class_CPUParticles3D_property_emission_colors>` multiplies the particle mesh's vertex colors. To have a visible effect on a :ref:`BaseMaterial3D<class_BaseMaterial3D>`, :ref:`BaseMaterial3D.vertex_color_use_as_albedo<class_BaseMaterial3D_property_vertex_color_use_as_albedo>` *must* be ``true``. For a :ref:`ShaderMaterial<class_ShaderMaterial>`, ``ALBEDO *= COLOR.rgb;`` must be inserted in the shader's ``fragment()`` function. Otherwise, :ref:`emission_colors<class_CPUParticles3D_property_emission_colors>` will have no visible effect.
+
 ----
 
 .. _class_CPUParticles3D_property_emission_normals:
@@ -1060,14 +1068,14 @@ Minimum linear acceleration.
 - :ref:`bool<class_bool>` **local_coords**
 
 +-----------+----------------------------------+
-| *Default* | ``true``                         |
+| *Default* | ``false``                        |
 +-----------+----------------------------------+
 | *Setter*  | set_use_local_coordinates(value) |
 +-----------+----------------------------------+
 | *Getter*  | get_use_local_coordinates()      |
 +-----------+----------------------------------+
 
-If ``true``, particles use the parent node's coordinate space. If ``false``, they use global coordinates.
+If ``true``, particles use the parent node's coordinate space (known as local coordinates). This will cause particles to move and rotate along the ``CPUParticles3D`` node (and its parents) when it is moved or rotated. If ``false``, particles use global coordinates; they will not move or rotate along the ``CPUParticles3D`` node (and its parents) when it is moved or rotated.
 
 ----
 
@@ -1456,7 +1464,7 @@ Method Descriptions
 
 - void **convert_from_particles** **(** :ref:`Node<class_Node>` particles **)**
 
-Sets this node's properties to match a given :ref:`GPUParticles3D<class_GPUParticles3D>` node with an assigned :ref:`ParticlesMaterial<class_ParticlesMaterial>`.
+Sets this node's properties to match a given :ref:`GPUParticles3D<class_GPUParticles3D>` node with an assigned :ref:`ParticleProcessMaterial<class_ParticleProcessMaterial>`.
 
 ----
 

+ 1 - 1
classes/class_cryptokey.rst

@@ -61,7 +61,7 @@ Loads a key from ``path``. If ``public_only`` is ``true``, only the public key w
 
 - :ref:`Error<enum_@GlobalScope_Error>` **load_from_string** **(** :ref:`String<class_String>` string_key, :ref:`bool<class_bool>` public_only=false **)**
 
-Loads a key from the given ``string``. If ``public_only`` is ``true``, only the public key will be loaded.
+Loads a key from the given ``string_key``. If ``public_only`` is ``true``, only the public key will be loaded.
 
 ----
 

+ 16 - 0
classes/class_csgshape3d.rst

@@ -38,6 +38,8 @@ Properties
 +---------------------------------------------+-------------------------------------------------------------------------+-----------+
 | :ref:`int<class_int>`                       | :ref:`collision_mask<class_CSGShape3D_property_collision_mask>`         | ``1``     |
 +---------------------------------------------+-------------------------------------------------------------------------+-----------+
+| :ref:`float<class_float>`                   | :ref:`collision_priority<class_CSGShape3D_property_collision_priority>` | ``1.0``   |
++---------------------------------------------+-------------------------------------------------------------------------+-----------+
 | :ref:`Operation<enum_CSGShape3D_Operation>` | :ref:`operation<class_CSGShape3D_property_operation>`                   | ``0``     |
 +---------------------------------------------+-------------------------------------------------------------------------+-----------+
 | :ref:`float<class_float>`                   | :ref:`snap<class_CSGShape3D_property_snap>`                             | ``0.001`` |
@@ -136,6 +138,20 @@ The physics layers this CSG shape scans for collisions. See `Collision layers an
 
 ----
 
+.. _class_CSGShape3D_property_collision_priority:
+
+- :ref:`float<class_float>` **collision_priority**
+
++-----------+-------------------------------+
+| *Default* | ``1.0``                       |
++-----------+-------------------------------+
+| *Setter*  | set_collision_priority(value) |
++-----------+-------------------------------+
+| *Getter*  | get_collision_priority()      |
++-----------+-------------------------------+
+
+----
+
 .. _class_CSGShape3D_property_operation:
 
 - :ref:`Operation<enum_CSGShape3D_Operation>` **operation**

+ 14 - 12
classes/class_curve.rst

@@ -19,6 +19,8 @@ Description
 
 A curve that can be saved and re-used for other objects. By default, it ranges between ``0`` and ``1`` on the Y axis and positions points relative to the ``0.5`` Y position.
 
+See also :ref:`Gradient<class_Gradient>` which is designed for color interpolation. See also :ref:`Curve2D<class_Curve2D>` and :ref:`Curve3D<class_Curve3D>`.
+
 Properties
 ----------
 
@@ -54,11 +56,11 @@ Methods
 +--------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`float<class_float>`                  | :ref:`get_point_right_tangent<class_Curve_method_get_point_right_tangent>` **(** :ref:`int<class_int>` index **)** |const|                                                                                                                                                                              |
 +--------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                  | :ref:`interpolate<class_Curve_method_interpolate>` **(** :ref:`float<class_float>` offset **)** |const|                                                                                                                                                                                                 |
+| void                                       | :ref:`remove_point<class_Curve_method_remove_point>` **(** :ref:`int<class_int>` index **)**                                                                                                                                                                                                            |
 +--------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                  | :ref:`interpolate_baked<class_Curve_method_interpolate_baked>` **(** :ref:`float<class_float>` offset **)** |const|                                                                                                                                                                                     |
+| :ref:`float<class_float>`                  | :ref:`sample<class_Curve_method_sample>` **(** :ref:`float<class_float>` offset **)** |const|                                                                                                                                                                                                           |
 +--------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                       | :ref:`remove_point<class_Curve_method_remove_point>` **(** :ref:`int<class_int>` index **)**                                                                                                                                                                                                            |
+| :ref:`float<class_float>`                  | :ref:`sample_baked<class_Curve_method_sample_baked>` **(** :ref:`float<class_float>` offset **)** |const|                                                                                                                                                                                               |
 +--------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                       | :ref:`set_point_left_mode<class_Curve_method_set_point_left_mode>` **(** :ref:`int<class_int>` index, :ref:`TangentMode<enum_Curve_TangentMode>` mode **)**                                                                                                                                             |
 +--------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -241,27 +243,27 @@ Returns the right tangent angle (in degrees) for the point at ``index``.
 
 ----
 
-.. _class_Curve_method_interpolate:
+.. _class_Curve_method_remove_point:
 
-- :ref:`float<class_float>` **interpolate** **(** :ref:`float<class_float>` offset **)** |const|
+- void **remove_point** **(** :ref:`int<class_int>` index **)**
 
-Returns the Y value for the point that would exist at the X position ``offset`` along the curve.
+Removes the point at ``index`` from the curve.
 
 ----
 
-.. _class_Curve_method_interpolate_baked:
+.. _class_Curve_method_sample:
 
-- :ref:`float<class_float>` **interpolate_baked** **(** :ref:`float<class_float>` offset **)** |const|
+- :ref:`float<class_float>` **sample** **(** :ref:`float<class_float>` offset **)** |const|
 
-Returns the Y value for the point that would exist at the X position ``offset`` along the curve using the baked cache. Bakes the curve's points if not already baked.
+Returns the Y value for the point that would exist at the X position ``offset`` along the curve.
 
 ----
 
-.. _class_Curve_method_remove_point:
+.. _class_Curve_method_sample_baked:
 
-- void **remove_point** **(** :ref:`int<class_int>` index **)**
+- :ref:`float<class_float>` **sample_baked** **(** :ref:`float<class_float>` offset **)** |const|
 
-Removes the point at ``index`` from the curve.
+Returns the Y value for the point that would exist at the X position ``offset`` along the curve using the baked cache. Bakes the curve's points if not already baked.
 
 ----
 

+ 58 - 58
classes/class_curve2d.rst

@@ -33,41 +33,41 @@ Properties
 Methods
 -------
 
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`add_point<class_Curve2D_method_add_point>` **(** :ref:`Vector2<class_Vector2>` position, :ref:`Vector2<class_Vector2>` in=Vector2(0, 0), :ref:`Vector2<class_Vector2>` out=Vector2(0, 0), :ref:`int<class_int>` at_position=-1 **)** |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`clear_points<class_Curve2D_method_clear_points>` **(** **)**                                                                                                                                                                         |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                           | :ref:`get_baked_length<class_Curve2D_method_get_baked_length>` **(** **)** |const|                                                                                                                                                         |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PackedVector2Array<class_PackedVector2Array>` | :ref:`get_baked_points<class_Curve2D_method_get_baked_points>` **(** **)** |const|                                                                                                                                                         |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                           | :ref:`get_closest_offset<class_Curve2D_method_get_closest_offset>` **(** :ref:`Vector2<class_Vector2>` to_point **)** |const|                                                                                                              |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>`                       | :ref:`get_closest_point<class_Curve2D_method_get_closest_point>` **(** :ref:`Vector2<class_Vector2>` to_point **)** |const|                                                                                                                |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>`                       | :ref:`get_point_in<class_Curve2D_method_get_point_in>` **(** :ref:`int<class_int>` idx **)** |const|                                                                                                                                       |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>`                       | :ref:`get_point_out<class_Curve2D_method_get_point_out>` **(** :ref:`int<class_int>` idx **)** |const|                                                                                                                                     |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>`                       | :ref:`get_point_position<class_Curve2D_method_get_point_position>` **(** :ref:`int<class_int>` idx **)** |const|                                                                                                                           |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>`                       | :ref:`interpolate<class_Curve2D_method_interpolate>` **(** :ref:`int<class_int>` idx, :ref:`float<class_float>` t **)** |const|                                                                                                            |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>`                       | :ref:`interpolate_baked<class_Curve2D_method_interpolate_baked>` **(** :ref:`float<class_float>` offset, :ref:`bool<class_bool>` cubic=false **)** |const|                                                                                 |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>`                       | :ref:`interpolatef<class_Curve2D_method_interpolatef>` **(** :ref:`float<class_float>` fofs **)** |const|                                                                                                                                  |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`remove_point<class_Curve2D_method_remove_point>` **(** :ref:`int<class_int>` idx **)**                                                                                                                                               |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`set_point_in<class_Curve2D_method_set_point_in>` **(** :ref:`int<class_int>` idx, :ref:`Vector2<class_Vector2>` position **)**                                                                                                       |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`set_point_out<class_Curve2D_method_set_point_out>` **(** :ref:`int<class_int>` idx, :ref:`Vector2<class_Vector2>` position **)**                                                                                                     |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`set_point_position<class_Curve2D_method_set_point_position>` **(** :ref:`int<class_int>` idx, :ref:`Vector2<class_Vector2>` position **)**                                                                                           |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PackedVector2Array<class_PackedVector2Array>` | :ref:`tessellate<class_Curve2D_method_tessellate>` **(** :ref:`int<class_int>` max_stages=5, :ref:`float<class_float>` tolerance_degrees=4 **)** |const|                                                                                   |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`add_point<class_Curve2D_method_add_point>` **(** :ref:`Vector2<class_Vector2>` position, :ref:`Vector2<class_Vector2>` in=Vector2(0, 0), :ref:`Vector2<class_Vector2>` out=Vector2(0, 0), :ref:`int<class_int>` index=-1 **)** |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`clear_points<class_Curve2D_method_clear_points>` **(** **)**                                                                                                                                                                   |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                           | :ref:`get_baked_length<class_Curve2D_method_get_baked_length>` **(** **)** |const|                                                                                                                                                   |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedVector2Array<class_PackedVector2Array>` | :ref:`get_baked_points<class_Curve2D_method_get_baked_points>` **(** **)** |const|                                                                                                                                                   |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                           | :ref:`get_closest_offset<class_Curve2D_method_get_closest_offset>` **(** :ref:`Vector2<class_Vector2>` to_point **)** |const|                                                                                                        |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>`                       | :ref:`get_closest_point<class_Curve2D_method_get_closest_point>` **(** :ref:`Vector2<class_Vector2>` to_point **)** |const|                                                                                                          |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>`                       | :ref:`get_point_in<class_Curve2D_method_get_point_in>` **(** :ref:`int<class_int>` idx **)** |const|                                                                                                                                 |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>`                       | :ref:`get_point_out<class_Curve2D_method_get_point_out>` **(** :ref:`int<class_int>` idx **)** |const|                                                                                                                               |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>`                       | :ref:`get_point_position<class_Curve2D_method_get_point_position>` **(** :ref:`int<class_int>` idx **)** |const|                                                                                                                     |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`remove_point<class_Curve2D_method_remove_point>` **(** :ref:`int<class_int>` idx **)**                                                                                                                                         |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>`                       | :ref:`sample<class_Curve2D_method_sample>` **(** :ref:`int<class_int>` idx, :ref:`float<class_float>` t **)** |const|                                                                                                                |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>`                       | :ref:`sample_baked<class_Curve2D_method_sample_baked>` **(** :ref:`float<class_float>` offset, :ref:`bool<class_bool>` cubic=false **)** |const|                                                                                     |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>`                       | :ref:`samplef<class_Curve2D_method_samplef>` **(** :ref:`float<class_float>` fofs **)** |const|                                                                                                                                      |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`set_point_in<class_Curve2D_method_set_point_in>` **(** :ref:`int<class_int>` idx, :ref:`Vector2<class_Vector2>` position **)**                                                                                                 |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`set_point_out<class_Curve2D_method_set_point_out>` **(** :ref:`int<class_int>` idx, :ref:`Vector2<class_Vector2>` position **)**                                                                                               |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`set_point_position<class_Curve2D_method_set_point_position>` **(** :ref:`int<class_int>` idx, :ref:`Vector2<class_Vector2>` position **)**                                                                                     |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedVector2Array<class_PackedVector2Array>` | :ref:`tessellate<class_Curve2D_method_tessellate>` **(** :ref:`int<class_int>` max_stages=5, :ref:`float<class_float>` tolerance_degrees=4 **)** |const|                                                                             |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Property Descriptions
 ---------------------
@@ -107,11 +107,11 @@ Method Descriptions
 
 .. _class_Curve2D_method_add_point:
 
-- void **add_point** **(** :ref:`Vector2<class_Vector2>` position, :ref:`Vector2<class_Vector2>` in=Vector2(0, 0), :ref:`Vector2<class_Vector2>` out=Vector2(0, 0), :ref:`int<class_int>` at_position=-1 **)**
+- void **add_point** **(** :ref:`Vector2<class_Vector2>` position, :ref:`Vector2<class_Vector2>` in=Vector2(0, 0), :ref:`Vector2<class_Vector2>` out=Vector2(0, 0), :ref:`int<class_int>` index=-1 **)**
 
-Adds a point to a curve at ``position`` relative to the ``Curve2D``'s position, with control points ``in`` and ``out``.
+Adds a point with the specified ``position`` relative to the curve's own position, with control points ``in`` and ``out``. Appends the new point at the end of the point list.
 
-If ``at_position`` is given, the point is inserted before the point number ``at_position``, moving that point (and every point after) after the inserted point. If ``at_position`` is not given, or is an illegal value (``at_position <0`` or ``at_position >= [method get_point_count]``), the point will be appended at the end of the point list.
+If ``index`` is given, the new point is inserted before the existing point identified by index ``index``. Every existing point starting from ``index`` is shifted further down the list of points. The index must be greater than or equal to ``0`` and must not exceed the number of existing points in the line. See :ref:`point_count<class_Curve2D_property_point_count>`.
 
 ----
 
@@ -143,9 +143,9 @@ Returns the cache of points as a :ref:`PackedVector2Array<class_PackedVector2Arr
 
 - :ref:`float<class_float>` **get_closest_offset** **(** :ref:`Vector2<class_Vector2>` to_point **)** |const|
 
-Returns the closest offset to ``to_point``. This offset is meant to be used in :ref:`interpolate_baked<class_Curve2D_method_interpolate_baked>`.
+Returns the closest offset to ``to_point``. This offset is meant to be used in :ref:`sample_baked<class_Curve2D_method_sample_baked>`.
 
-\ ``to_point`` must be in this curve's local space.
+``to_point`` must be in this curve's local space.
 
 ----
 
@@ -155,7 +155,7 @@ Returns the closest offset to ``to_point``. This offset is meant to be used in :
 
 Returns the closest baked point (in curve's local space) to ``to_point``.
 
-\ ``to_point`` must be in this curve's local space.
+``to_point`` must be in this curve's local space.
 
 ----
 
@@ -183,9 +183,17 @@ Returns the position of the vertex ``idx``. If the index is out of bounds, the f
 
 ----
 
-.. _class_Curve2D_method_interpolate:
+.. _class_Curve2D_method_remove_point:
+
+- void **remove_point** **(** :ref:`int<class_int>` idx **)**
+
+Deletes the point ``idx`` from the curve. Sends an error to the console if ``idx`` is out of bounds.
+
+----
+
+.. _class_Curve2D_method_sample:
 
-- :ref:`Vector2<class_Vector2>` **interpolate** **(** :ref:`int<class_int>` idx, :ref:`float<class_float>` t **)** |const|
+- :ref:`Vector2<class_Vector2>` **sample** **(** :ref:`int<class_int>` idx, :ref:`float<class_float>` t **)** |const|
 
 Returns the position between the vertex ``idx`` and the vertex ``idx + 1``, where ``t`` controls if the point is the first vertex (``t = 0.0``), the last vertex (``t = 1.0``), or in between. Values of ``t`` outside the range (``0.0 >= t <=1``) give strange, but predictable results.
 
@@ -193,9 +201,9 @@ If ``idx`` is out of bounds it is truncated to the first or last vertex, and ``t
 
 ----
 
-.. _class_Curve2D_method_interpolate_baked:
+.. _class_Curve2D_method_sample_baked:
 
-- :ref:`Vector2<class_Vector2>` **interpolate_baked** **(** :ref:`float<class_float>` offset, :ref:`bool<class_bool>` cubic=false **)** |const|
+- :ref:`Vector2<class_Vector2>` **sample_baked** **(** :ref:`float<class_float>` offset, :ref:`bool<class_bool>` cubic=false **)** |const|
 
 Returns a point within the curve at position ``offset``, where ``offset`` is measured as a pixel distance along the curve.
 
@@ -205,19 +213,11 @@ Cubic interpolation tends to follow the curves better, but linear is faster (and
 
 ----
 
-.. _class_Curve2D_method_interpolatef:
+.. _class_Curve2D_method_samplef:
 
-- :ref:`Vector2<class_Vector2>` **interpolatef** **(** :ref:`float<class_float>` fofs **)** |const|
+- :ref:`Vector2<class_Vector2>` **samplef** **(** :ref:`float<class_float>` fofs **)** |const|
 
-Returns the position at the vertex ``fofs``. It calls :ref:`interpolate<class_Curve2D_method_interpolate>` using the integer part of ``fofs`` as ``idx``, and its fractional part as ``t``.
-
-----
-
-.. _class_Curve2D_method_remove_point:
-
-- void **remove_point** **(** :ref:`int<class_int>` idx **)**
-
-Deletes the point ``idx`` from the curve. Sends an error to the console if ``idx`` is out of bounds.
+Returns the position at the vertex ``fofs``. It calls :ref:`sample<class_Curve2D_method_sample>` using the integer part of ``fofs`` as ``idx``, and its fractional part as ``t``.
 
 ----
 
@@ -253,9 +253,9 @@ Returns a list of points along the curve, with a curvature controlled point dens
 
 This approximation makes straight segments between each point, then subdivides those segments until the resulting shape is similar enough.
 
-\ ``max_stages`` controls how many subdivisions a curve segment may face before it is considered approximate enough. Each subdivision splits the segment in half, so the default 5 stages may mean up to 32 subdivisions per curve segment. Increase with care!
+``max_stages`` controls how many subdivisions a curve segment may face before it is considered approximate enough. Each subdivision splits the segment in half, so the default 5 stages may mean up to 32 subdivisions per curve segment. Increase with care!
 
-\ ``tolerance_degrees`` controls how many degrees the midpoint of a segment may deviate from the real curve, before the segment has to be subdivided.
+``tolerance_degrees`` controls how many degrees the midpoint of a segment may deviate from the real curve, before the segment has to be subdivided.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 70 - 70
classes/class_curve3d.rst

@@ -35,51 +35,51 @@ Properties
 Methods
 -------
 
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`add_point<class_Curve3D_method_add_point>` **(** :ref:`Vector3<class_Vector3>` position, :ref:`Vector3<class_Vector3>` in=Vector3(0, 0, 0), :ref:`Vector3<class_Vector3>` out=Vector3(0, 0, 0), :ref:`int<class_int>` at_position=-1 **)** |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`clear_points<class_Curve3D_method_clear_points>` **(** **)**                                                                                                                                                                               |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                           | :ref:`get_baked_length<class_Curve3D_method_get_baked_length>` **(** **)** |const|                                                                                                                                                               |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PackedVector3Array<class_PackedVector3Array>` | :ref:`get_baked_points<class_Curve3D_method_get_baked_points>` **(** **)** |const|                                                                                                                                                               |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PackedFloat32Array<class_PackedFloat32Array>` | :ref:`get_baked_tilts<class_Curve3D_method_get_baked_tilts>` **(** **)** |const|                                                                                                                                                                 |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PackedVector3Array<class_PackedVector3Array>` | :ref:`get_baked_up_vectors<class_Curve3D_method_get_baked_up_vectors>` **(** **)** |const|                                                                                                                                                       |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                           | :ref:`get_closest_offset<class_Curve3D_method_get_closest_offset>` **(** :ref:`Vector3<class_Vector3>` to_point **)** |const|                                                                                                                    |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector3<class_Vector3>`                       | :ref:`get_closest_point<class_Curve3D_method_get_closest_point>` **(** :ref:`Vector3<class_Vector3>` to_point **)** |const|                                                                                                                      |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector3<class_Vector3>`                       | :ref:`get_point_in<class_Curve3D_method_get_point_in>` **(** :ref:`int<class_int>` idx **)** |const|                                                                                                                                             |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector3<class_Vector3>`                       | :ref:`get_point_out<class_Curve3D_method_get_point_out>` **(** :ref:`int<class_int>` idx **)** |const|                                                                                                                                           |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector3<class_Vector3>`                       | :ref:`get_point_position<class_Curve3D_method_get_point_position>` **(** :ref:`int<class_int>` idx **)** |const|                                                                                                                                 |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                           | :ref:`get_point_tilt<class_Curve3D_method_get_point_tilt>` **(** :ref:`int<class_int>` idx **)** |const|                                                                                                                                         |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector3<class_Vector3>`                       | :ref:`interpolate<class_Curve3D_method_interpolate>` **(** :ref:`int<class_int>` idx, :ref:`float<class_float>` t **)** |const|                                                                                                                  |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector3<class_Vector3>`                       | :ref:`interpolate_baked<class_Curve3D_method_interpolate_baked>` **(** :ref:`float<class_float>` offset, :ref:`bool<class_bool>` cubic=false **)** |const|                                                                                       |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector3<class_Vector3>`                       | :ref:`interpolate_baked_up_vector<class_Curve3D_method_interpolate_baked_up_vector>` **(** :ref:`float<class_float>` offset, :ref:`bool<class_bool>` apply_tilt=false **)** |const|                                                              |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector3<class_Vector3>`                       | :ref:`interpolatef<class_Curve3D_method_interpolatef>` **(** :ref:`float<class_float>` fofs **)** |const|                                                                                                                                        |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`remove_point<class_Curve3D_method_remove_point>` **(** :ref:`int<class_int>` idx **)**                                                                                                                                                     |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`set_point_in<class_Curve3D_method_set_point_in>` **(** :ref:`int<class_int>` idx, :ref:`Vector3<class_Vector3>` position **)**                                                                                                             |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`set_point_out<class_Curve3D_method_set_point_out>` **(** :ref:`int<class_int>` idx, :ref:`Vector3<class_Vector3>` position **)**                                                                                                           |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`set_point_position<class_Curve3D_method_set_point_position>` **(** :ref:`int<class_int>` idx, :ref:`Vector3<class_Vector3>` position **)**                                                                                                 |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`set_point_tilt<class_Curve3D_method_set_point_tilt>` **(** :ref:`int<class_int>` idx, :ref:`float<class_float>` tilt **)**                                                                                                                 |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PackedVector3Array<class_PackedVector3Array>` | :ref:`tessellate<class_Curve3D_method_tessellate>` **(** :ref:`int<class_int>` max_stages=5, :ref:`float<class_float>` tolerance_degrees=4 **)** |const|                                                                                         |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`add_point<class_Curve3D_method_add_point>` **(** :ref:`Vector3<class_Vector3>` position, :ref:`Vector3<class_Vector3>` in=Vector3(0, 0, 0), :ref:`Vector3<class_Vector3>` out=Vector3(0, 0, 0), :ref:`int<class_int>` index=-1 **)** |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`clear_points<class_Curve3D_method_clear_points>` **(** **)**                                                                                                                                                                         |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                           | :ref:`get_baked_length<class_Curve3D_method_get_baked_length>` **(** **)** |const|                                                                                                                                                         |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedVector3Array<class_PackedVector3Array>` | :ref:`get_baked_points<class_Curve3D_method_get_baked_points>` **(** **)** |const|                                                                                                                                                         |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedFloat32Array<class_PackedFloat32Array>` | :ref:`get_baked_tilts<class_Curve3D_method_get_baked_tilts>` **(** **)** |const|                                                                                                                                                           |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedVector3Array<class_PackedVector3Array>` | :ref:`get_baked_up_vectors<class_Curve3D_method_get_baked_up_vectors>` **(** **)** |const|                                                                                                                                                 |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                           | :ref:`get_closest_offset<class_Curve3D_method_get_closest_offset>` **(** :ref:`Vector3<class_Vector3>` to_point **)** |const|                                                                                                              |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector3<class_Vector3>`                       | :ref:`get_closest_point<class_Curve3D_method_get_closest_point>` **(** :ref:`Vector3<class_Vector3>` to_point **)** |const|                                                                                                                |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector3<class_Vector3>`                       | :ref:`get_point_in<class_Curve3D_method_get_point_in>` **(** :ref:`int<class_int>` idx **)** |const|                                                                                                                                       |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector3<class_Vector3>`                       | :ref:`get_point_out<class_Curve3D_method_get_point_out>` **(** :ref:`int<class_int>` idx **)** |const|                                                                                                                                     |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector3<class_Vector3>`                       | :ref:`get_point_position<class_Curve3D_method_get_point_position>` **(** :ref:`int<class_int>` idx **)** |const|                                                                                                                           |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                           | :ref:`get_point_tilt<class_Curve3D_method_get_point_tilt>` **(** :ref:`int<class_int>` idx **)** |const|                                                                                                                                   |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`remove_point<class_Curve3D_method_remove_point>` **(** :ref:`int<class_int>` idx **)**                                                                                                                                               |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector3<class_Vector3>`                       | :ref:`sample<class_Curve3D_method_sample>` **(** :ref:`int<class_int>` idx, :ref:`float<class_float>` t **)** |const|                                                                                                                      |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector3<class_Vector3>`                       | :ref:`sample_baked<class_Curve3D_method_sample_baked>` **(** :ref:`float<class_float>` offset, :ref:`bool<class_bool>` cubic=false **)** |const|                                                                                           |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector3<class_Vector3>`                       | :ref:`sample_baked_up_vector<class_Curve3D_method_sample_baked_up_vector>` **(** :ref:`float<class_float>` offset, :ref:`bool<class_bool>` apply_tilt=false **)** |const|                                                                  |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector3<class_Vector3>`                       | :ref:`samplef<class_Curve3D_method_samplef>` **(** :ref:`float<class_float>` fofs **)** |const|                                                                                                                                            |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`set_point_in<class_Curve3D_method_set_point_in>` **(** :ref:`int<class_int>` idx, :ref:`Vector3<class_Vector3>` position **)**                                                                                                       |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`set_point_out<class_Curve3D_method_set_point_out>` **(** :ref:`int<class_int>` idx, :ref:`Vector3<class_Vector3>` position **)**                                                                                                     |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`set_point_position<class_Curve3D_method_set_point_position>` **(** :ref:`int<class_int>` idx, :ref:`Vector3<class_Vector3>` position **)**                                                                                           |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`set_point_tilt<class_Curve3D_method_set_point_tilt>` **(** :ref:`int<class_int>` idx, :ref:`float<class_float>` tilt **)**                                                                                                           |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedVector3Array<class_PackedVector3Array>` | :ref:`tessellate<class_Curve3D_method_tessellate>` **(** :ref:`int<class_int>` max_stages=5, :ref:`float<class_float>` tolerance_degrees=4 **)** |const|                                                                                   |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Property Descriptions
 ---------------------
@@ -135,11 +135,11 @@ Method Descriptions
 
 .. _class_Curve3D_method_add_point:
 
-- void **add_point** **(** :ref:`Vector3<class_Vector3>` position, :ref:`Vector3<class_Vector3>` in=Vector3(0, 0, 0), :ref:`Vector3<class_Vector3>` out=Vector3(0, 0, 0), :ref:`int<class_int>` at_position=-1 **)**
+- void **add_point** **(** :ref:`Vector3<class_Vector3>` position, :ref:`Vector3<class_Vector3>` in=Vector3(0, 0, 0), :ref:`Vector3<class_Vector3>` out=Vector3(0, 0, 0), :ref:`int<class_int>` index=-1 **)**
 
-Adds a point to a curve at ``position`` relative to the ``Curve3D``'s position, with control points ``in`` and ``out``.
+Adds a point with the specified ``position`` relative to the curve's own position, with control points ``in`` and ``out``. Appends the new point at the end of the point list.
 
-If ``at_position`` is given, the point is inserted before the point number ``at_position``, moving that point (and every point after) after the inserted point. If ``at_position`` is not given, or is an illegal value (``at_position <0`` or ``at_position >= [method get_point_count]``), the point will be appended at the end of the point list.
+If ``index`` is given, the new point is inserted before the existing point identified by index ``index``. Every existing point starting from ``index`` is shifted further down the list of points. The index must be greater than or equal to ``0`` and must not exceed the number of existing points in the line. See :ref:`point_count<class_Curve3D_property_point_count>`.
 
 ----
 
@@ -189,9 +189,9 @@ If :ref:`up_vector_enabled<class_Curve3D_property_up_vector_enabled>` is ``false
 
 - :ref:`float<class_float>` **get_closest_offset** **(** :ref:`Vector3<class_Vector3>` to_point **)** |const|
 
-Returns the closest offset to ``to_point``. This offset is meant to be used in :ref:`interpolate_baked<class_Curve3D_method_interpolate_baked>` or :ref:`interpolate_baked_up_vector<class_Curve3D_method_interpolate_baked_up_vector>`.
+Returns the closest offset to ``to_point``. This offset is meant to be used in :ref:`sample_baked<class_Curve3D_method_sample_baked>` or :ref:`sample_baked_up_vector<class_Curve3D_method_sample_baked_up_vector>`.
 
-\ ``to_point`` must be in this curve's local space.
+``to_point`` must be in this curve's local space.
 
 ----
 
@@ -201,7 +201,7 @@ Returns the closest offset to ``to_point``. This offset is meant to be used in :
 
 Returns the closest baked point (in curve's local space) to ``to_point``.
 
-\ ``to_point`` must be in this curve's local space.
+``to_point`` must be in this curve's local space.
 
 ----
 
@@ -237,9 +237,17 @@ Returns the tilt angle in radians for the point ``idx``. If the index is out of
 
 ----
 
-.. _class_Curve3D_method_interpolate:
+.. _class_Curve3D_method_remove_point:
+
+- void **remove_point** **(** :ref:`int<class_int>` idx **)**
+
+Deletes the point ``idx`` from the curve. Sends an error to the console if ``idx`` is out of bounds.
+
+----
+
+.. _class_Curve3D_method_sample:
 
-- :ref:`Vector3<class_Vector3>` **interpolate** **(** :ref:`int<class_int>` idx, :ref:`float<class_float>` t **)** |const|
+- :ref:`Vector3<class_Vector3>` **sample** **(** :ref:`int<class_int>` idx, :ref:`float<class_float>` t **)** |const|
 
 Returns the position between the vertex ``idx`` and the vertex ``idx + 1``, where ``t`` controls if the point is the first vertex (``t = 0.0``), the last vertex (``t = 1.0``), or in between. Values of ``t`` outside the range (``0.0 >= t <=1``) give strange, but predictable results.
 
@@ -247,9 +255,9 @@ If ``idx`` is out of bounds it is truncated to the first or last vertex, and ``t
 
 ----
 
-.. _class_Curve3D_method_interpolate_baked:
+.. _class_Curve3D_method_sample_baked:
 
-- :ref:`Vector3<class_Vector3>` **interpolate_baked** **(** :ref:`float<class_float>` offset, :ref:`bool<class_bool>` cubic=false **)** |const|
+- :ref:`Vector3<class_Vector3>` **sample_baked** **(** :ref:`float<class_float>` offset, :ref:`bool<class_bool>` cubic=false **)** |const|
 
 Returns a point within the curve at position ``offset``, where ``offset`` is measured as a distance in 3D units along the curve.
 
@@ -259,9 +267,9 @@ Cubic interpolation tends to follow the curves better, but linear is faster (and
 
 ----
 
-.. _class_Curve3D_method_interpolate_baked_up_vector:
+.. _class_Curve3D_method_sample_baked_up_vector:
 
-- :ref:`Vector3<class_Vector3>` **interpolate_baked_up_vector** **(** :ref:`float<class_float>` offset, :ref:`bool<class_bool>` apply_tilt=false **)** |const|
+- :ref:`Vector3<class_Vector3>` **sample_baked_up_vector** **(** :ref:`float<class_float>` offset, :ref:`bool<class_bool>` apply_tilt=false **)** |const|
 
 Returns an up vector within the curve at position ``offset``, where ``offset`` is measured as a distance in 3D units along the curve.
 
@@ -271,19 +279,11 @@ If the curve has no up vectors, the function sends an error to the console, and
 
 ----
 
-.. _class_Curve3D_method_interpolatef:
+.. _class_Curve3D_method_samplef:
 
-- :ref:`Vector3<class_Vector3>` **interpolatef** **(** :ref:`float<class_float>` fofs **)** |const|
+- :ref:`Vector3<class_Vector3>` **samplef** **(** :ref:`float<class_float>` fofs **)** |const|
 
-Returns the position at the vertex ``fofs``. It calls :ref:`interpolate<class_Curve3D_method_interpolate>` using the integer part of ``fofs`` as ``idx``, and its fractional part as ``t``.
-
-----
-
-.. _class_Curve3D_method_remove_point:
-
-- void **remove_point** **(** :ref:`int<class_int>` idx **)**
-
-Deletes the point ``idx`` from the curve. Sends an error to the console if ``idx`` is out of bounds.
+Returns the position at the vertex ``fofs``. It calls :ref:`sample<class_Curve3D_method_sample>` using the integer part of ``fofs`` as ``idx``, and its fractional part as ``t``.
 
 ----
 
@@ -329,9 +329,9 @@ Returns a list of points along the curve, with a curvature controlled point dens
 
 This approximation makes straight segments between each point, then subdivides those segments until the resulting shape is similar enough.
 
-\ ``max_stages`` controls how many subdivisions a curve segment may face before it is considered approximate enough. Each subdivision splits the segment in half, so the default 5 stages may mean up to 32 subdivisions per curve segment. Increase with care!
+``max_stages`` controls how many subdivisions a curve segment may face before it is considered approximate enough. Each subdivision splits the segment in half, so the default 5 stages may mean up to 32 subdivisions per curve segment. Increase with care!
 
-\ ``tolerance_degrees`` controls how many degrees the midpoint of a segment may deviate from the real curve, before the segment has to be subdivided.
+``tolerance_degrees`` controls how many degrees the midpoint of a segment may deviate from the real curve, before the segment has to be subdivided.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 12 - 6
classes/class_decal.rst

@@ -111,7 +111,7 @@ Property Descriptions
 | *Getter*  | get_albedo_mix()      |
 +-----------+-----------------------+
 
-Blends the albedo :ref:`Color<class_Color>` of the decal with albedo :ref:`Color<class_Color>` of the underlying mesh.
+Blends the albedo :ref:`Color<class_Color>` of the decal with albedo :ref:`Color<class_Color>` of the underlying mesh. This can be set to ``0.0`` to create a decal that only affects normal or ORM. In this case, an albedo texture is still required as its alpha channel will determine where the normal and ORM will be overridden. See also :ref:`modulate<class_Decal_property_modulate>`.
 
 ----
 
@@ -175,7 +175,7 @@ If ``true``, decals will smoothly fade away when far from the active :ref:`Camer
 | *Getter*  | get_distance_fade_length()      |
 +-----------+---------------------------------+
 
-The distance over which the Decal fades (in 3D units). The Decal becomes slowly more transparent over this distance and is completely invisible at the end.
+The distance over which the Decal fades (in 3D units). The Decal becomes slowly more transparent over this distance and is completely invisible at the end. Higher values result in a smoother fade-out transition, which is more suited when the camera moves fast.
 
 ----
 
@@ -191,7 +191,7 @@ The distance over which the Decal fades (in 3D units). The Decal becomes slowly
 | *Getter*  | get_emission_energy()      |
 +-----------+----------------------------+
 
-Energy multiplier for the emission texture. This will make the decal emit light at a higher intensity.
+Energy multiplier for the emission texture. This will make the decal emit light at a higher or lower intensity, independently of the albedo color. See also :ref:`modulate<class_Decal_property_modulate>`.
 
 ----
 
@@ -223,7 +223,7 @@ Sets the size of the :ref:`AABB<class_AABB>` used by the decal. The AABB goes fr
 | *Getter*  | get_lower_fade()      |
 +-----------+-----------------------+
 
-Sets the curve over which the decal will fade as the surface gets further from the center of the :ref:`AABB<class_AABB>`. Only positive values are valid (negative values will be clamped to ``0.0``).
+Sets the curve over which the decal will fade as the surface gets further from the center of the :ref:`AABB<class_AABB>`. Only positive values are valid (negative values will be clamped to ``0.0``). See also :ref:`upper_fade<class_Decal_property_upper_fade>`.
 
 ----
 
@@ -239,7 +239,7 @@ Sets the curve over which the decal will fade as the surface gets further from t
 | *Getter*  | get_modulate()        |
 +-----------+-----------------------+
 
-Changes the :ref:`Color<class_Color>` of the Decal by multiplying it with this value.
+Changes the :ref:`Color<class_Color>` of the Decal by multiplying the albedo and emission colors with this value. The alpha component is only taken into account when multiplying the albedo color, not the emission color. See also :ref:`emission_energy<class_Decal_property_emission_energy>` and :ref:`albedo_mix<class_Decal_property_albedo_mix>` to change the emission and albedo intensity independently of each other.
 
 ----
 
@@ -257,6 +257,8 @@ Changes the :ref:`Color<class_Color>` of the Decal by multiplying it with this v
 
 Fades the Decal if the angle between the Decal's :ref:`AABB<class_AABB>` and the target surface becomes too large. A value of ``0`` projects the Decal regardless of angle, a value of ``1`` limits the Decal to surfaces that are nearly perpendicular.
 
+\ **Note:** Setting :ref:`normal_fade<class_Decal_property_normal_fade>` to a value greater than ``0.0`` has a small performance cost due to the added normal angle computations.
+
 ----
 
 .. _class_Decal_property_texture_albedo:
@@ -305,6 +307,8 @@ Fades the Decal if the angle between the Decal's :ref:`AABB<class_AABB>` and the
 
 \ **Note:** Unlike :ref:`BaseMaterial3D<class_BaseMaterial3D>` whose filter mode can be adjusted on a per-material basis, the filter mode for ``Decal`` textures is set globally with :ref:`ProjectSettings.rendering/textures/decals/filter<class_ProjectSettings_property_rendering/textures/decals/filter>`.
 
+\ **Note:** Setting this texture alone will not result in a visible decal, as :ref:`texture_albedo<class_Decal_property_texture_albedo>` must also be set. To create a normal-only decal, load an albedo texture into :ref:`texture_albedo<class_Decal_property_texture_albedo>` and set :ref:`albedo_mix<class_Decal_property_albedo_mix>` to ``0.0``. The albedo texture's alpha channel will be used to determine where the underlying surface's normal map should be overridden (and its intensity).
+
 ----
 
 .. _class_Decal_property_texture_orm:
@@ -321,6 +325,8 @@ Fades the Decal if the angle between the Decal's :ref:`AABB<class_AABB>` and the
 
 \ **Note:** Unlike :ref:`BaseMaterial3D<class_BaseMaterial3D>` whose filter mode can be adjusted on a per-material basis, the filter mode for ``Decal`` textures is set globally with :ref:`ProjectSettings.rendering/textures/decals/filter<class_ProjectSettings_property_rendering/textures/decals/filter>`.
 
+\ **Note:** Setting this texture alone will not result in a visible decal, as :ref:`texture_albedo<class_Decal_property_texture_albedo>` must also be set. To create a ORM-only decal, load an albedo texture into :ref:`texture_albedo<class_Decal_property_texture_albedo>` and set :ref:`albedo_mix<class_Decal_property_albedo_mix>` to ``0.0``. The albedo texture's alpha channel will be used to determine where the underlying surface's ORM map should be overridden (and its intensity).
+
 ----
 
 .. _class_Decal_property_upper_fade:
@@ -335,7 +341,7 @@ Fades the Decal if the angle between the Decal's :ref:`AABB<class_AABB>` and the
 | *Getter*  | get_upper_fade()      |
 +-----------+-----------------------+
 
-Sets the curve over which the decal will fade as the surface gets further from the center of the :ref:`AABB<class_AABB>`. Only positive values are valid (negative values will be clamped to ``0.0``).
+Sets the curve over which the decal will fade as the surface gets further from the center of the :ref:`AABB<class_AABB>`. Only positive values are valid (negative values will be clamped to ``0.0``). See also :ref:`lower_fade<class_Decal_property_lower_fade>`.
 
 Method Descriptions
 -------------------

+ 186 - 58
classes/class_displayserver.rst

@@ -46,7 +46,7 @@ Methods
 +----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                                           | :ref:`force_process_and_drop_events<class_DisplayServer_method_force_process_and_drop_events>` **(** **)**                                                                                                                                                                                                                                                                                                                       |
 +----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                                      | :ref:`get_display_cutouts<class_DisplayServer_method_get_display_cutouts>` **(** **)** |const|                                                                                                                                                                                                                                                                                                                                   |
+| :ref:`Rect2[]<class_Rect2>`                                    | :ref:`get_display_cutouts<class_DisplayServer_method_get_display_cutouts>` **(** **)** |const|                                                                                                                                                                                                                                                                                                                                   |
 +----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Rect2i<class_Rect2i>`                                    | :ref:`get_display_safe_area<class_DisplayServer_method_get_display_safe_area>` **(** **)** |const|                                                                                                                                                                                                                                                                                                                               |
 +----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -60,23 +60,23 @@ Methods
 +----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`PackedInt32Array<class_PackedInt32Array>`                | :ref:`get_window_list<class_DisplayServer_method_get_window_list>` **(** **)** |const|                                                                                                                                                                                                                                                                                                                                           |
 +----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                           | :ref:`global_menu_add_check_item<class_DisplayServer_method_global_menu_add_check_item>` **(** :ref:`String<class_String>` menu_root, :ref:`String<class_String>` label, :ref:`Callable<class_Callable>` callback, :ref:`Variant<class_Variant>` tag=null, :ref:`Key<enum_@GlobalScope_Key>` accelerator=0, :ref:`int<class_int>` index=-1 **)**                                                                                 |
+| :ref:`int<class_int>`                                          | :ref:`global_menu_add_check_item<class_DisplayServer_method_global_menu_add_check_item>` **(** :ref:`String<class_String>` menu_root, :ref:`String<class_String>` label, :ref:`Callable<class_Callable>` callback, :ref:`Variant<class_Variant>` tag=null, :ref:`Key<enum_@GlobalScope_Key>` accelerator=0, :ref:`int<class_int>` index=-1 **)**                                                                                 |
 +----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                           | :ref:`global_menu_add_icon_check_item<class_DisplayServer_method_global_menu_add_icon_check_item>` **(** :ref:`String<class_String>` menu_root, :ref:`Texture2D<class_Texture2D>` icon, :ref:`String<class_String>` label, :ref:`Callable<class_Callable>` callback, :ref:`Variant<class_Variant>` tag=null, :ref:`Key<enum_@GlobalScope_Key>` accelerator=0, :ref:`int<class_int>` index=-1 **)**                               |
+| :ref:`int<class_int>`                                          | :ref:`global_menu_add_icon_check_item<class_DisplayServer_method_global_menu_add_icon_check_item>` **(** :ref:`String<class_String>` menu_root, :ref:`Texture2D<class_Texture2D>` icon, :ref:`String<class_String>` label, :ref:`Callable<class_Callable>` callback, :ref:`Variant<class_Variant>` tag=null, :ref:`Key<enum_@GlobalScope_Key>` accelerator=0, :ref:`int<class_int>` index=-1 **)**                               |
 +----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                           | :ref:`global_menu_add_icon_item<class_DisplayServer_method_global_menu_add_icon_item>` **(** :ref:`String<class_String>` menu_root, :ref:`Texture2D<class_Texture2D>` icon, :ref:`String<class_String>` label, :ref:`Callable<class_Callable>` callback, :ref:`Variant<class_Variant>` tag=null, :ref:`Key<enum_@GlobalScope_Key>` accelerator=0, :ref:`int<class_int>` index=-1 **)**                                           |
+| :ref:`int<class_int>`                                          | :ref:`global_menu_add_icon_item<class_DisplayServer_method_global_menu_add_icon_item>` **(** :ref:`String<class_String>` menu_root, :ref:`Texture2D<class_Texture2D>` icon, :ref:`String<class_String>` label, :ref:`Callable<class_Callable>` callback, :ref:`Variant<class_Variant>` tag=null, :ref:`Key<enum_@GlobalScope_Key>` accelerator=0, :ref:`int<class_int>` index=-1 **)**                                           |
 +----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                           | :ref:`global_menu_add_icon_radio_check_item<class_DisplayServer_method_global_menu_add_icon_radio_check_item>` **(** :ref:`String<class_String>` menu_root, :ref:`Texture2D<class_Texture2D>` icon, :ref:`String<class_String>` label, :ref:`Callable<class_Callable>` callback, :ref:`Variant<class_Variant>` tag=null, :ref:`Key<enum_@GlobalScope_Key>` accelerator=0, :ref:`int<class_int>` index=-1 **)**                   |
+| :ref:`int<class_int>`                                          | :ref:`global_menu_add_icon_radio_check_item<class_DisplayServer_method_global_menu_add_icon_radio_check_item>` **(** :ref:`String<class_String>` menu_root, :ref:`Texture2D<class_Texture2D>` icon, :ref:`String<class_String>` label, :ref:`Callable<class_Callable>` callback, :ref:`Variant<class_Variant>` tag=null, :ref:`Key<enum_@GlobalScope_Key>` accelerator=0, :ref:`int<class_int>` index=-1 **)**                   |
 +----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                           | :ref:`global_menu_add_item<class_DisplayServer_method_global_menu_add_item>` **(** :ref:`String<class_String>` menu_root, :ref:`String<class_String>` label, :ref:`Callable<class_Callable>` callback, :ref:`Variant<class_Variant>` tag=null, :ref:`Key<enum_@GlobalScope_Key>` accelerator=0, :ref:`int<class_int>` index=-1 **)**                                                                                             |
+| :ref:`int<class_int>`                                          | :ref:`global_menu_add_item<class_DisplayServer_method_global_menu_add_item>` **(** :ref:`String<class_String>` menu_root, :ref:`String<class_String>` label, :ref:`Callable<class_Callable>` callback, :ref:`Variant<class_Variant>` tag=null, :ref:`Key<enum_@GlobalScope_Key>` accelerator=0, :ref:`int<class_int>` index=-1 **)**                                                                                             |
 +----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                           | :ref:`global_menu_add_multistate_item<class_DisplayServer_method_global_menu_add_multistate_item>` **(** :ref:`String<class_String>` menu_root, :ref:`String<class_String>` labe, :ref:`int<class_int>` max_states, :ref:`int<class_int>` default_state, :ref:`Callable<class_Callable>` callback, :ref:`Variant<class_Variant>` tag=null, :ref:`Key<enum_@GlobalScope_Key>` accelerator=0, :ref:`int<class_int>` index=-1 **)** |
+| :ref:`int<class_int>`                                          | :ref:`global_menu_add_multistate_item<class_DisplayServer_method_global_menu_add_multistate_item>` **(** :ref:`String<class_String>` menu_root, :ref:`String<class_String>` labe, :ref:`int<class_int>` max_states, :ref:`int<class_int>` default_state, :ref:`Callable<class_Callable>` callback, :ref:`Variant<class_Variant>` tag=null, :ref:`Key<enum_@GlobalScope_Key>` accelerator=0, :ref:`int<class_int>` index=-1 **)** |
 +----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                           | :ref:`global_menu_add_radio_check_item<class_DisplayServer_method_global_menu_add_radio_check_item>` **(** :ref:`String<class_String>` menu_root, :ref:`String<class_String>` label, :ref:`Callable<class_Callable>` callback, :ref:`Variant<class_Variant>` tag=null, :ref:`Key<enum_@GlobalScope_Key>` accelerator=0, :ref:`int<class_int>` index=-1 **)**                                                                     |
+| :ref:`int<class_int>`                                          | :ref:`global_menu_add_radio_check_item<class_DisplayServer_method_global_menu_add_radio_check_item>` **(** :ref:`String<class_String>` menu_root, :ref:`String<class_String>` label, :ref:`Callable<class_Callable>` callback, :ref:`Variant<class_Variant>` tag=null, :ref:`Key<enum_@GlobalScope_Key>` accelerator=0, :ref:`int<class_int>` index=-1 **)**                                                                     |
 +----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                           | :ref:`global_menu_add_separator<class_DisplayServer_method_global_menu_add_separator>` **(** :ref:`String<class_String>` menu_root, :ref:`int<class_int>` index=-1 **)**                                                                                                                                                                                                                                                         |
+| :ref:`int<class_int>`                                          | :ref:`global_menu_add_separator<class_DisplayServer_method_global_menu_add_separator>` **(** :ref:`String<class_String>` menu_root, :ref:`int<class_int>` index=-1 **)**                                                                                                                                                                                                                                                         |
 +----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                           | :ref:`global_menu_add_submenu_item<class_DisplayServer_method_global_menu_add_submenu_item>` **(** :ref:`String<class_String>` menu_root, :ref:`String<class_String>` label, :ref:`String<class_String>` submenu, :ref:`int<class_int>` index=-1 **)**                                                                                                                                                                           |
+| :ref:`int<class_int>`                                          | :ref:`global_menu_add_submenu_item<class_DisplayServer_method_global_menu_add_submenu_item>` **(** :ref:`String<class_String>` menu_root, :ref:`String<class_String>` label, :ref:`String<class_String>` submenu, :ref:`int<class_int>` index=-1 **)**                                                                                                                                                                           |
 +----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                                           | :ref:`global_menu_clear<class_DisplayServer_method_global_menu_clear>` **(** :ref:`String<class_String>` menu_root **)**                                                                                                                                                                                                                                                                                                         |
 +----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -86,6 +86,8 @@ Methods
 +----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Texture2D<class_Texture2D>`                              | :ref:`global_menu_get_item_icon<class_DisplayServer_method_global_menu_get_item_icon>` **(** :ref:`String<class_String>` menu_root, :ref:`int<class_int>` idx **)** |const|                                                                                                                                                                                                                                                      |
 +----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                          | :ref:`global_menu_get_item_indentation_level<class_DisplayServer_method_global_menu_get_item_indentation_level>` **(** :ref:`String<class_String>` menu_root, :ref:`int<class_int>` idx **)** |const|                                                                                                                                                                                                                            |
++----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                                          | :ref:`global_menu_get_item_index_from_tag<class_DisplayServer_method_global_menu_get_item_index_from_tag>` **(** :ref:`String<class_String>` menu_root, :ref:`Variant<class_Variant>` tag **)** |const|                                                                                                                                                                                                                          |
 +----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                                          | :ref:`global_menu_get_item_index_from_text<class_DisplayServer_method_global_menu_get_item_index_from_text>` **(** :ref:`String<class_String>` menu_root, :ref:`String<class_String>` text **)** |const|                                                                                                                                                                                                                         |
@@ -124,6 +126,8 @@ Methods
 +----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                                           | :ref:`global_menu_set_item_icon<class_DisplayServer_method_global_menu_set_item_icon>` **(** :ref:`String<class_String>` menu_root, :ref:`int<class_int>` idx, :ref:`Texture2D<class_Texture2D>` icon **)**                                                                                                                                                                                                                      |
 +----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                           | :ref:`global_menu_set_item_indentation_level<class_DisplayServer_method_global_menu_set_item_indentation_level>` **(** :ref:`String<class_String>` menu_root, :ref:`int<class_int>` idx, :ref:`int<class_int>` level **)**                                                                                                                                                                                                       |
++----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                                           | :ref:`global_menu_set_item_max_states<class_DisplayServer_method_global_menu_set_item_max_states>` **(** :ref:`String<class_String>` menu_root, :ref:`int<class_int>` idx, :ref:`int<class_int>` max_states **)**                                                                                                                                                                                                                |
 +----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                                           | :ref:`global_menu_set_item_radio_checkable<class_DisplayServer_method_global_menu_set_item_radio_checkable>` **(** :ref:`String<class_String>` menu_root, :ref:`int<class_int>` idx, :ref:`bool<class_bool>` checkable **)**                                                                                                                                                                                                     |
@@ -202,7 +206,7 @@ Methods
 +----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                                           | :ref:`tablet_set_current_driver<class_DisplayServer_method_tablet_set_current_driver>` **(** :ref:`String<class_String>` name **)**                                                                                                                                                                                                                                                                                              |
 +----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                                      | :ref:`tts_get_voices<class_DisplayServer_method_tts_get_voices>` **(** **)** |const|                                                                                                                                                                                                                                                                                                                                             |
+| :ref:`Dictionary[]<class_Dictionary>`                          | :ref:`tts_get_voices<class_DisplayServer_method_tts_get_voices>` **(** **)** |const|                                                                                                                                                                                                                                                                                                                                             |
 +----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`PackedStringArray<class_PackedStringArray>`              | :ref:`tts_get_voices_for_language<class_DisplayServer_method_tts_get_voices_for_language>` **(** :ref:`String<class_String>` language **)** |const|                                                                                                                                                                                                                                                                              |
 +----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -224,7 +228,7 @@ Methods
 +----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                                           | :ref:`virtual_keyboard_hide<class_DisplayServer_method_virtual_keyboard_hide>` **(** **)**                                                                                                                                                                                                                                                                                                                                       |
 +----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                           | :ref:`virtual_keyboard_show<class_DisplayServer_method_virtual_keyboard_show>` **(** :ref:`String<class_String>` existing_text, :ref:`Rect2<class_Rect2>` position=Rect2(0, 0, 0, 0), :ref:`bool<class_bool>` multiline=false, :ref:`int<class_int>` max_length=-1, :ref:`int<class_int>` cursor_start=-1, :ref:`int<class_int>` cursor_end=-1 **)**                                                                             |
+| void                                                           | :ref:`virtual_keyboard_show<class_DisplayServer_method_virtual_keyboard_show>` **(** :ref:`String<class_String>` existing_text, :ref:`Rect2<class_Rect2>` position=Rect2(0, 0, 0, 0), :ref:`VirtualKeyboardType<enum_DisplayServer_VirtualKeyboardType>` type=0, :ref:`int<class_int>` max_length=-1, :ref:`int<class_int>` cursor_start=-1, :ref:`int<class_int>` cursor_end=-1 **)**                                           |
 +----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                                           | :ref:`warp_mouse<class_DisplayServer_method_warp_mouse>` **(** :ref:`Vector2i<class_Vector2i>` position **)**                                                                                                                                                                                                                                                                                                                    |
 +----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -254,10 +258,16 @@ Methods
 +----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Vector2i<class_Vector2i>`                                | :ref:`window_get_real_size<class_DisplayServer_method_window_get_real_size>` **(** :ref:`int<class_int>` window_id=0 **)** |const|                                                                                                                                                                                                                                                                                               |
 +----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2i<class_Vector2i>`                                | :ref:`window_get_safe_title_margins<class_DisplayServer_method_window_get_safe_title_margins>` **(** :ref:`int<class_int>` window_id=0 **)** |const|                                                                                                                                                                                                                                                                             |
++----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Vector2i<class_Vector2i>`                                | :ref:`window_get_size<class_DisplayServer_method_window_get_size>` **(** :ref:`int<class_int>` window_id=0 **)** |const|                                                                                                                                                                                                                                                                                                         |
 +----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`VSyncMode<enum_DisplayServer_VSyncMode>`                 | :ref:`window_get_vsync_mode<class_DisplayServer_method_window_get_vsync_mode>` **(** :ref:`int<class_int>` window_id=0 **)** |const|                                                                                                                                                                                                                                                                                             |
 +----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                        | :ref:`window_maximize_on_title_dbl_click<class_DisplayServer_method_window_maximize_on_title_dbl_click>` **(** **)** |const|                                                                                                                                                                                                                                                                                                     |
++----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                        | :ref:`window_minimize_on_title_dbl_click<class_DisplayServer_method_window_minimize_on_title_dbl_click>` **(** **)** |const|                                                                                                                                                                                                                                                                                                     |
++----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                                           | :ref:`window_move_to_foreground<class_DisplayServer_method_window_move_to_foreground>` **(** :ref:`int<class_int>` window_id=0 **)**                                                                                                                                                                                                                                                                                             |
 +----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                                           | :ref:`window_request_attention<class_DisplayServer_method_window_request_attention>` **(** :ref:`int<class_int>` window_id=0 **)**                                                                                                                                                                                                                                                                                               |
@@ -346,6 +356,8 @@ Enumerations
 
 .. _class_DisplayServer_constant_FEATURE_TEXT_TO_SPEECH:
 
+.. _class_DisplayServer_constant_FEATURE_EXTEND_TO_TITLE:
+
 enum **Feature**:
 
 - **FEATURE_GLOBAL_MENU** = **0**
@@ -386,6 +398,8 @@ enum **Feature**:
 
 - **FEATURE_TEXT_TO_SPEECH** = **19** --- Display server supports text-to-speech. See ``tts_*`` methods.
 
+- **FEATURE_EXTEND_TO_TITLE** = **20** --- Display server supports expanding window content to the title. See :ref:`WINDOW_FLAG_EXTEND_TO_TITLE<class_DisplayServer_constant_WINDOW_FLAG_EXTEND_TO_TITLE>`.
+
 ----
 
 .. _enum_DisplayServer_MouseMode:
@@ -450,6 +464,46 @@ enum **ScreenOrientation**:
 
 ----
 
+.. _enum_DisplayServer_VirtualKeyboardType:
+
+.. _class_DisplayServer_constant_KEYBOARD_TYPE_DEFAULT:
+
+.. _class_DisplayServer_constant_KEYBOARD_TYPE_MULTILINE:
+
+.. _class_DisplayServer_constant_KEYBOARD_TYPE_NUMBER:
+
+.. _class_DisplayServer_constant_KEYBOARD_TYPE_NUMBER_DECIMAL:
+
+.. _class_DisplayServer_constant_KEYBOARD_TYPE_PHONE:
+
+.. _class_DisplayServer_constant_KEYBOARD_TYPE_EMAIL_ADDRESS:
+
+.. _class_DisplayServer_constant_KEYBOARD_TYPE_PASSWORD:
+
+.. _class_DisplayServer_constant_KEYBOARD_TYPE_URL:
+
+enum **VirtualKeyboardType**:
+
+- **KEYBOARD_TYPE_DEFAULT** = **0** --- Default text virtual keyboard.
+
+- **KEYBOARD_TYPE_MULTILINE** = **1** --- Multiline virtual keyboard.
+
+- **KEYBOARD_TYPE_NUMBER** = **2** --- Virtual number keypad, useful for PIN entry.
+
+- **KEYBOARD_TYPE_NUMBER_DECIMAL** = **3** --- Virtual number keypad, useful for entering fractional numbers.
+
+- **KEYBOARD_TYPE_PHONE** = **4** --- Virtual phone number keypad.
+
+- **KEYBOARD_TYPE_EMAIL_ADDRESS** = **5** --- Virtual keyboard with additional keys to assist with typing email addresses.
+
+- **KEYBOARD_TYPE_PASSWORD** = **6** --- Virtual keyboard for entering a password. On most platforms, this should disable autocomplete and autocapitalization.
+
+\ **Note:** This is not supported on Web. Instead, this behaves identically to :ref:`KEYBOARD_TYPE_DEFAULT<class_DisplayServer_constant_KEYBOARD_TYPE_DEFAULT>`.
+
+- **KEYBOARD_TYPE_URL** = **7** --- Virtual keyboard with additional keys to assist with typing URLs.
+
+----
+
 .. _enum_DisplayServer_CursorShape:
 
 .. _class_DisplayServer_constant_CURSOR_ARROW:
@@ -574,6 +628,8 @@ Regardless of the platform, enabling fullscreen will change the window size to m
 
 .. _class_DisplayServer_constant_WINDOW_FLAG_POPUP:
 
+.. _class_DisplayServer_constant_WINDOW_FLAG_EXTEND_TO_TITLE:
+
 .. _class_DisplayServer_constant_WINDOW_FLAG_MAX:
 
 enum **WindowFlags**:
@@ -590,7 +646,11 @@ enum **WindowFlags**:
 
 - **WINDOW_FLAG_POPUP** = **5** --- Window is part of menu or :ref:`OptionButton<class_OptionButton>` dropdown. This flag can't be changed when window is visible. An active popup window will exclusively receive all input, without stealing focus from its parent. Popup windows are automatically closed when uses click outside it, or when an application is switched. Popup window must have :ref:`WINDOW_FLAG_TRANSPARENT<class_DisplayServer_constant_WINDOW_FLAG_TRANSPARENT>` set.
 
-- **WINDOW_FLAG_MAX** = **6**
+- **WINDOW_FLAG_EXTEND_TO_TITLE** = **6** --- Window content is expanded to the full size of the window. Unlike borderless window, the frame is left intact and can be used to resize the window, title bar is transparent, but have minimize/maximize/close buttons.
+
+\ **Note:** This flag is implemented on macOS.
+
+- **WINDOW_FLAG_MAX** = **7**
 
 ----
 
@@ -672,7 +732,7 @@ enum **HandleType**:
 
 	- Linux: ``X11::Window*`` for the window.
 
-	- MacOS: ``NSWindow*`` for the window.
+	- macOS: ``NSWindow*`` for the window.
 
 	- iOS: ``UIViewController*`` for the view controller.
 
@@ -680,7 +740,7 @@ enum **HandleType**:
 
 - **WINDOW_VIEW** = **2** --- Window view:
 
-	- MacOS: ``NSView*`` for the window main view.
+	- macOS: ``NSView*`` for the window main view.
 
 	- iOS: ``UIView*`` for the window main view.
 
@@ -824,7 +884,7 @@ Sets the user's primary clipboard content to the given string.
 
 .. _class_DisplayServer_method_get_display_cutouts:
 
-- :ref:`Array<class_Array>` **get_display_cutouts** **(** **)** |const|
+- :ref:`Rect2[]<class_Rect2>` **get_display_cutouts** **(** **)** |const|
 
 Returns an :ref:`Array<class_Array>` of :ref:`Rect2<class_Rect2>`, each of which is the bounding rectangle for a display cutout or notch. These are non-functional areas on edge-to-edge screens used by cameras and sensors. Returns an empty array if the device does not have cutouts. See also :ref:`get_display_safe_area<class_DisplayServer_method_get_display_safe_area>`.
 
@@ -872,61 +932,69 @@ Returns the unobscured area of the display where interactive controls should be
 
 .. _class_DisplayServer_method_global_menu_add_check_item:
 
-- void **global_menu_add_check_item** **(** :ref:`String<class_String>` menu_root, :ref:`String<class_String>` label, :ref:`Callable<class_Callable>` callback, :ref:`Variant<class_Variant>` tag=null, :ref:`Key<enum_@GlobalScope_Key>` accelerator=0, :ref:`int<class_int>` index=-1 **)**
+- :ref:`int<class_int>` **global_menu_add_check_item** **(** :ref:`String<class_String>` menu_root, :ref:`String<class_String>` label, :ref:`Callable<class_Callable>` callback, :ref:`Variant<class_Variant>` tag=null, :ref:`Key<enum_@GlobalScope_Key>` accelerator=0, :ref:`int<class_int>` index=-1 **)**
 
 Adds a new checkable item with text ``label`` to the global menu with ID ``menu_root``.
 
+Returns index of the inserted item, it's not guaranteed to be the same as ``index`` value.
+
 \ **Note:** This method is implemented on macOS.
 
 \ **Supported system menu IDs:**\ 
 
 ::
 
-    "" - Main menu (macOS).
+    "_main" - Main menu (macOS).
     "_dock" - Dock popup menu (macOS).
 
 ----
 
 .. _class_DisplayServer_method_global_menu_add_icon_check_item:
 
-- void **global_menu_add_icon_check_item** **(** :ref:`String<class_String>` menu_root, :ref:`Texture2D<class_Texture2D>` icon, :ref:`String<class_String>` label, :ref:`Callable<class_Callable>` callback, :ref:`Variant<class_Variant>` tag=null, :ref:`Key<enum_@GlobalScope_Key>` accelerator=0, :ref:`int<class_int>` index=-1 **)**
+- :ref:`int<class_int>` **global_menu_add_icon_check_item** **(** :ref:`String<class_String>` menu_root, :ref:`Texture2D<class_Texture2D>` icon, :ref:`String<class_String>` label, :ref:`Callable<class_Callable>` callback, :ref:`Variant<class_Variant>` tag=null, :ref:`Key<enum_@GlobalScope_Key>` accelerator=0, :ref:`int<class_int>` index=-1 **)**
 
 Adds a new checkable item with text ``label`` and icon ``icon`` to the global menu with ID ``menu_root``.
 
+Returns index of the inserted item, it's not guaranteed to be the same as ``index`` value.
+
 \ **Note:** This method is implemented on macOS.
 
 \ **Supported system menu IDs:**\ 
 
 ::
 
-    "" - Main menu (macOS).
+    "_main" - Main menu (macOS).
     "_dock" - Dock popup menu (macOS).
 
 ----
 
 .. _class_DisplayServer_method_global_menu_add_icon_item:
 
-- void **global_menu_add_icon_item** **(** :ref:`String<class_String>` menu_root, :ref:`Texture2D<class_Texture2D>` icon, :ref:`String<class_String>` label, :ref:`Callable<class_Callable>` callback, :ref:`Variant<class_Variant>` tag=null, :ref:`Key<enum_@GlobalScope_Key>` accelerator=0, :ref:`int<class_int>` index=-1 **)**
+- :ref:`int<class_int>` **global_menu_add_icon_item** **(** :ref:`String<class_String>` menu_root, :ref:`Texture2D<class_Texture2D>` icon, :ref:`String<class_String>` label, :ref:`Callable<class_Callable>` callback, :ref:`Variant<class_Variant>` tag=null, :ref:`Key<enum_@GlobalScope_Key>` accelerator=0, :ref:`int<class_int>` index=-1 **)**
 
 Adds a new item with text ``label`` and icon ``icon`` to the global menu with ID ``menu_root``.
 
+Returns index of the inserted item, it's not guaranteed to be the same as ``index`` value.
+
 \ **Note:** This method is implemented on macOS.
 
 \ **Supported system menu IDs:**\ 
 
 ::
 
-    "" - Main menu (macOS).
+    "_main" - Main menu (macOS).
     "_dock" - Dock popup menu (macOS).
 
 ----
 
 .. _class_DisplayServer_method_global_menu_add_icon_radio_check_item:
 
-- void **global_menu_add_icon_radio_check_item** **(** :ref:`String<class_String>` menu_root, :ref:`Texture2D<class_Texture2D>` icon, :ref:`String<class_String>` label, :ref:`Callable<class_Callable>` callback, :ref:`Variant<class_Variant>` tag=null, :ref:`Key<enum_@GlobalScope_Key>` accelerator=0, :ref:`int<class_int>` index=-1 **)**
+- :ref:`int<class_int>` **global_menu_add_icon_radio_check_item** **(** :ref:`String<class_String>` menu_root, :ref:`Texture2D<class_Texture2D>` icon, :ref:`String<class_String>` label, :ref:`Callable<class_Callable>` callback, :ref:`Variant<class_Variant>` tag=null, :ref:`Key<enum_@GlobalScope_Key>` accelerator=0, :ref:`int<class_int>` index=-1 **)**
 
 Adds a new radio-checkable item with text ``label`` and icon ``icon`` to the global menu with ID ``menu_root``.
 
+Returns index of the inserted item, it's not guaranteed to be the same as ``index`` value.
+
 \ **Note:** Radio-checkable items just display a checkmark, but don't have any built-in checking behavior and must be checked/unchecked manually. See :ref:`global_menu_set_item_checked<class_DisplayServer_method_global_menu_set_item_checked>` for more info on how to control it.
 
 \ **Note:** This method is implemented on macOS.
@@ -935,53 +1003,61 @@ Adds a new radio-checkable item with text ``label`` and icon ``icon`` to the glo
 
 ::
 
-    "" - Main menu (macOS).
+    "_main" - Main menu (macOS).
     "_dock" - Dock popup menu (macOS).
 
 ----
 
 .. _class_DisplayServer_method_global_menu_add_item:
 
-- void **global_menu_add_item** **(** :ref:`String<class_String>` menu_root, :ref:`String<class_String>` label, :ref:`Callable<class_Callable>` callback, :ref:`Variant<class_Variant>` tag=null, :ref:`Key<enum_@GlobalScope_Key>` accelerator=0, :ref:`int<class_int>` index=-1 **)**
+- :ref:`int<class_int>` **global_menu_add_item** **(** :ref:`String<class_String>` menu_root, :ref:`String<class_String>` label, :ref:`Callable<class_Callable>` callback, :ref:`Variant<class_Variant>` tag=null, :ref:`Key<enum_@GlobalScope_Key>` accelerator=0, :ref:`int<class_int>` index=-1 **)**
 
 Adds a new item with text ``label`` to the global menu with ID ``menu_root``.
 
+Returns index of the inserted item, it's not guaranteed to be the same as ``index`` value.
+
 \ **Note:** This method is implemented on macOS.
 
 \ **Supported system menu IDs:**\ 
 
 ::
 
-    "" - Main menu (macOS).
+    "_main" - Main menu (macOS).
     "_dock" - Dock popup menu (macOS).
 
 ----
 
 .. _class_DisplayServer_method_global_menu_add_multistate_item:
 
-- void **global_menu_add_multistate_item** **(** :ref:`String<class_String>` menu_root, :ref:`String<class_String>` labe, :ref:`int<class_int>` max_states, :ref:`int<class_int>` default_state, :ref:`Callable<class_Callable>` callback, :ref:`Variant<class_Variant>` tag=null, :ref:`Key<enum_@GlobalScope_Key>` accelerator=0, :ref:`int<class_int>` index=-1 **)**
+- :ref:`int<class_int>` **global_menu_add_multistate_item** **(** :ref:`String<class_String>` menu_root, :ref:`String<class_String>` labe, :ref:`int<class_int>` max_states, :ref:`int<class_int>` default_state, :ref:`Callable<class_Callable>` callback, :ref:`Variant<class_Variant>` tag=null, :ref:`Key<enum_@GlobalScope_Key>` accelerator=0, :ref:`int<class_int>` index=-1 **)**
 
-Adds a new item with text ``label`` to the global menu with ID ``menu_root``.
+Adds a new item with text ``labe`` to the global menu with ID ``menu_root``.
 
 Contrarily to normal binary items, multistate items can have more than two states, as defined by ``max_states``. Each press or activate of the item will increase the state by one. The default value is defined by ``default_state``.
 
+Returns index of the inserted item, it's not guaranteed to be the same as ``index`` value.
+
+\ **Note:** By default, there's no indication of the current item state, it should be changed manually.
+
 \ **Note:** This method is implemented on macOS.
 
 \ **Supported system menu IDs:**\ 
 
 ::
 
-    "" - Main menu (macOS).
+    "_main" - Main menu (macOS).
     "_dock" - Dock popup menu (macOS).
 
 ----
 
 .. _class_DisplayServer_method_global_menu_add_radio_check_item:
 
-- void **global_menu_add_radio_check_item** **(** :ref:`String<class_String>` menu_root, :ref:`String<class_String>` label, :ref:`Callable<class_Callable>` callback, :ref:`Variant<class_Variant>` tag=null, :ref:`Key<enum_@GlobalScope_Key>` accelerator=0, :ref:`int<class_int>` index=-1 **)**
+- :ref:`int<class_int>` **global_menu_add_radio_check_item** **(** :ref:`String<class_String>` menu_root, :ref:`String<class_String>` label, :ref:`Callable<class_Callable>` callback, :ref:`Variant<class_Variant>` tag=null, :ref:`Key<enum_@GlobalScope_Key>` accelerator=0, :ref:`int<class_int>` index=-1 **)**
 
 Adds a new radio-checkable item with text ``label`` to the global menu with ID ``menu_root``.
 
+Returns index of the inserted item, it's not guaranteed to be the same as ``index`` value.
+
 \ **Note:** Radio-checkable items just display a checkmark, but don't have any built-in checking behavior and must be checked/unchecked manually. See :ref:`global_menu_set_item_checked<class_DisplayServer_method_global_menu_set_item_checked>` for more info on how to control it.
 
 \ **Note:** This method is implemented on macOS.
@@ -990,41 +1066,45 @@ Adds a new radio-checkable item with text ``label`` to the global menu with ID `
 
 ::
 
-    "" - Main menu (macOS).
+    "_main" - Main menu (macOS).
     "_dock" - Dock popup menu (macOS).
 
 ----
 
 .. _class_DisplayServer_method_global_menu_add_separator:
 
-- void **global_menu_add_separator** **(** :ref:`String<class_String>` menu_root, :ref:`int<class_int>` index=-1 **)**
+- :ref:`int<class_int>` **global_menu_add_separator** **(** :ref:`String<class_String>` menu_root, :ref:`int<class_int>` index=-1 **)**
 
 Adds a separator between items to the global menu with ID ``menu_root``. Separators also occupy an index.
 
+Returns index of the inserted item, it's not guaranteed to be the same as ``index`` value.
+
 \ **Note:** This method is implemented on macOS.
 
 \ **Supported system menu IDs:**\ 
 
 ::
 
-    "" - Main menu (macOS).
+    "_main" - Main menu (macOS).
     "_dock" - Dock popup menu (macOS).
 
 ----
 
 .. _class_DisplayServer_method_global_menu_add_submenu_item:
 
-- void **global_menu_add_submenu_item** **(** :ref:`String<class_String>` menu_root, :ref:`String<class_String>` label, :ref:`String<class_String>` submenu, :ref:`int<class_int>` index=-1 **)**
+- :ref:`int<class_int>` **global_menu_add_submenu_item** **(** :ref:`String<class_String>` menu_root, :ref:`String<class_String>` label, :ref:`String<class_String>` submenu, :ref:`int<class_int>` index=-1 **)**
 
 Adds an item that will act as a submenu of the global menu ``menu_root``. The ``submenu`` argument is the ID of the global menu root that will be shown when the item is clicked.
 
+Returns index of the inserted item, it's not guaranteed to be the same as ``index`` value.
+
 \ **Note:** This method is implemented on macOS.
 
 \ **Supported system menu IDs:**\ 
 
 ::
 
-    "" - Main menu (macOS).
+    "_main" - Main menu (macOS).
     "_dock" - Dock popup menu (macOS).
 
 ----
@@ -1041,7 +1121,7 @@ Removes all items from the global menu with ID ``menu_root``.
 
 ::
 
-    "" - Main menu (macOS).
+    "_main" - Main menu (macOS).
     "_dock" - Dock popup menu (macOS).
 
 ----
@@ -1076,6 +1156,16 @@ Returns the icon of the item at index ``idx``.
 
 ----
 
+.. _class_DisplayServer_method_global_menu_get_item_indentation_level:
+
+- :ref:`int<class_int>` **global_menu_get_item_indentation_level** **(** :ref:`String<class_String>` menu_root, :ref:`int<class_int>` idx **)** |const|
+
+Returns the horizontal offset of the item at the given ``idx``.
+
+\ **Note:** This method is implemented on macOS.
+
+----
+
 .. _class_DisplayServer_method_global_menu_get_item_index_from_tag:
 
 - :ref:`int<class_int>` **global_menu_get_item_index_from_tag** **(** :ref:`String<class_String>` menu_root, :ref:`Variant<class_Variant>` tag **)** |const|
@@ -1274,6 +1364,16 @@ Replaces the :ref:`Texture2D<class_Texture2D>` icon of the specified ``idx``.
 
 ----
 
+.. _class_DisplayServer_method_global_menu_set_item_indentation_level:
+
+- void **global_menu_set_item_indentation_level** **(** :ref:`String<class_String>` menu_root, :ref:`int<class_int>` idx, :ref:`int<class_int>` level **)**
+
+Sets the horizontal offset of the item at the given ``idx``.
+
+\ **Note:** This method is implemented on macOS.
+
+----
+
 .. _class_DisplayServer_method_global_menu_set_item_max_states:
 
 - void **global_menu_set_item_max_states** **(** :ref:`String<class_String>` menu_root, :ref:`int<class_int>` idx, :ref:`int<class_int>` max_states **)**
@@ -1460,7 +1560,7 @@ Returns the mouse cursor's current position.
 
 - :ref:`int<class_int>` **screen_get_dpi** **(** :ref:`int<class_int>` screen=-1 **)** |const|
 
-Returns the dots per inch density of the specified screen. If ``screen`` is ``\ SCREEN_OF_MAIN_WINDOW`` (the default value), a screen with the main window will be used.
+Returns the dots per inch density of the specified screen. If ``screen`` is :ref:`SCREEN_OF_MAIN_WINDOW<class_DisplayServer_constant_SCREEN_OF_MAIN_WINDOW>` (the default value), a screen with the main window will be used.
 
 \ **Note:** On macOS, returned value is inaccurate if fractional display scaling mode is used.
 
@@ -1509,7 +1609,7 @@ Returns the greatest scale factor of all screens.
 
 Returns the current refresh rate of the specified screen. If ``screen`` is :ref:`SCREEN_OF_MAIN_WINDOW<class_DisplayServer_constant_SCREEN_OF_MAIN_WINDOW>` (the default value), a screen with the main window will be used.
 
-\ **Note:** Returns ``-1.0`` if the DisplayServer fails to find the refresh rate for the specified screen. On HTML5, :ref:`screen_get_refresh_rate<class_DisplayServer_method_screen_get_refresh_rate>` will always return ``-1.0`` as there is no way to retrieve the refresh rate on that platform.
+\ **Note:** Returns ``-1.0`` if the DisplayServer fails to find the refresh rate for the specified screen. On Web, :ref:`screen_get_refresh_rate<class_DisplayServer_method_screen_get_refresh_rate>` will always return ``-1.0`` as there is no way to retrieve the refresh rate on that platform.
 
 To fallback to a default refresh rate if the method fails, try:
 
@@ -1623,7 +1723,7 @@ Set active tablet driver name.
 
 .. _class_DisplayServer_method_tts_get_voices:
 
-- :ref:`Array<class_Array>` **tts_get_voices** **(** **)** |const|
+- :ref:`Dictionary[]<class_Dictionary>` **tts_get_voices** **(** **)** |const|
 
 Returns an :ref:`Array<class_Array>` of voice information dictionaries.
 
@@ -1635,7 +1735,7 @@ Each :ref:`Dictionary<class_Dictionary>` contains two :ref:`String<class_String>
 
 - ``language`` is language code in ``lang_Variant`` format. ``lang`` part is a 2 or 3-letter code based on the ISO-639 standard, in lowercase. And ``Variant`` part is an engine dependent string describing country, region or/and dialect.
 
-\ **Note:** This method is implemented on Android, iOS, HTML5, Linux, macOS, and Windows.
+\ **Note:** This method is implemented on Android, iOS, Web, Linux, macOS, and Windows.
 
 ----
 
@@ -1645,7 +1745,7 @@ Each :ref:`Dictionary<class_Dictionary>` contains two :ref:`String<class_String>
 
 Returns an :ref:`PackedStringArray<class_PackedStringArray>` of voice identifiers for the ``language``.
 
-\ **Note:** This method is implemented on Android, iOS, HTML5, Linux, macOS, and Windows.
+\ **Note:** This method is implemented on Android, iOS, Web, Linux, macOS, and Windows.
 
 ----
 
@@ -1655,7 +1755,7 @@ Returns an :ref:`PackedStringArray<class_PackedStringArray>` of voice identifier
 
 Returns ``true`` if the synthesizer is in a paused state.
 
-\ **Note:** This method is implemented on Android, iOS, HTML5, Linux, macOS, and Windows.
+\ **Note:** This method is implemented on Android, iOS, Web, Linux, macOS, and Windows.
 
 ----
 
@@ -1665,7 +1765,7 @@ Returns ``true`` if the synthesizer is in a paused state.
 
 Returns ``true`` if the synthesizer is generating speech, or have utterance waiting in the queue.
 
-\ **Note:** This method is implemented on Android, iOS, HTML5, Linux, macOS, and Windows.
+\ **Note:** This method is implemented on Android, iOS, Web, Linux, macOS, and Windows.
 
 ----
 
@@ -1675,7 +1775,7 @@ Returns ``true`` if the synthesizer is generating speech, or have utterance wait
 
 Puts the synthesizer into a paused state.
 
-\ **Note:** This method is implemented on Android, iOS, HTML5, Linux, macOS, and Windows.
+\ **Note:** This method is implemented on Android, iOS, Web, Linux, macOS, and Windows.
 
 ----
 
@@ -1685,7 +1785,7 @@ Puts the synthesizer into a paused state.
 
 Resumes the synthesizer if it was paused.
 
-\ **Note:** This method is implemented on Android, iOS, HTML5, Linux, macOS, and Windows.
+\ **Note:** This method is implemented on Android, iOS, Web, Linux, macOS, and Windows.
 
 ----
 
@@ -1701,7 +1801,7 @@ Adds a callback, which is called when the utterance has started, finished, cance
 
 \ **Note:** The granularity of the boundary callbacks is engine dependent.
 
-\ **Note:** This method is implemented on Android, iOS, HTML5, Linux, macOS, and Windows.
+\ **Note:** This method is implemented on Android, iOS, Web, Linux, macOS, and Windows.
 
 ----
 
@@ -1725,7 +1825,7 @@ Adds an utterance to the queue. If ``interrupt`` is ``true``, the queue is clear
 
 \ **Note:** The granularity of pitch, rate, and volume is engine and voice dependent. Values may be truncated.
 
-\ **Note:** This method is implemented on Android, iOS, HTML5, Linux, macOS, and Windows.
+\ **Note:** This method is implemented on Android, iOS, Web, Linux, macOS, and Windows.
 
 ----
 
@@ -1735,7 +1835,7 @@ Adds an utterance to the queue. If ``interrupt`` is ``true``, the queue is clear
 
 Stops synthesis in progress and removes all utterances from the queue.
 
-\ **Note:** This method is implemented on Android, iOS, HTML5, Linux, macOS, and Windows.
+\ **Note:** This method is implemented on Android, iOS, Web, Linux, macOS, and Windows.
 
 ----
 
@@ -1757,23 +1857,23 @@ Hides the virtual keyboard if it is shown, does nothing otherwise.
 
 .. _class_DisplayServer_method_virtual_keyboard_show:
 
-- void **virtual_keyboard_show** **(** :ref:`String<class_String>` existing_text, :ref:`Rect2<class_Rect2>` position=Rect2(0, 0, 0, 0), :ref:`bool<class_bool>` multiline=false, :ref:`int<class_int>` max_length=-1, :ref:`int<class_int>` cursor_start=-1, :ref:`int<class_int>` cursor_end=-1 **)**
+- void **virtual_keyboard_show** **(** :ref:`String<class_String>` existing_text, :ref:`Rect2<class_Rect2>` position=Rect2(0, 0, 0, 0), :ref:`VirtualKeyboardType<enum_DisplayServer_VirtualKeyboardType>` type=0, :ref:`int<class_int>` max_length=-1, :ref:`int<class_int>` cursor_start=-1, :ref:`int<class_int>` cursor_end=-1 **)**
 
 Shows the virtual keyboard if the platform has one.
 
-\ ``existing_text`` parameter is useful for implementing your own :ref:`LineEdit<class_LineEdit>` or :ref:`TextEdit<class_TextEdit>`, as it tells the virtual keyboard what text has already been typed (the virtual keyboard uses it for auto-correct and predictions).
+``existing_text`` parameter is useful for implementing your own :ref:`LineEdit<class_LineEdit>` or :ref:`TextEdit<class_TextEdit>`, as it tells the virtual keyboard what text has already been typed (the virtual keyboard uses it for auto-correct and predictions).
 
-\ ``position`` parameter is the screen space :ref:`Rect2<class_Rect2>` of the edited text.
+``position`` parameter is the screen space :ref:`Rect2<class_Rect2>` of the edited text.
 
-\ ``multiline`` parameter needs to be set to ``true`` to be able to enter multiple lines of text, as in :ref:`TextEdit<class_TextEdit>`.
+``type`` parameter allows configuring which type of virtual keyboard to show.
 
-\ ``max_length`` limits the number of characters that can be entered if different from ``-1``.
+``max_length`` limits the number of characters that can be entered if different from ``-1``.
 
-\ ``cursor_start`` can optionally define the current text cursor position if ``cursor_end`` is not set.
+``cursor_start`` can optionally define the current text cursor position if ``cursor_end`` is not set.
 
-\ ``cursor_start`` and ``cursor_end`` can optionally define the current text selection.
+``cursor_start`` and ``cursor_end`` can optionally define the current text selection.
 
-\ **Note:** This method is implemented on Android, iOS and UWP.
+\ **Note:** This method is implemented on Android, iOS and Web.
 
 ----
 
@@ -1877,6 +1977,14 @@ Returns the position of the given window to on the screen.
 
 ----
 
+.. _class_DisplayServer_method_window_get_safe_title_margins:
+
+- :ref:`Vector2i<class_Vector2i>` **window_get_safe_title_margins** **(** :ref:`int<class_int>` window_id=0 **)** |const|
+
+Returns left and right margins of the title that are safe to use (contains no buttons or other elements) when :ref:`WINDOW_FLAG_EXTEND_TO_TITLE<class_DisplayServer_constant_WINDOW_FLAG_EXTEND_TO_TITLE>` flag is set.
+
+----
+
 .. _class_DisplayServer_method_window_get_size:
 
 - :ref:`Vector2i<class_Vector2i>` **window_get_size** **(** :ref:`int<class_int>` window_id=0 **)** |const|
@@ -1887,7 +1995,27 @@ Returns the position of the given window to on the screen.
 
 - :ref:`VSyncMode<enum_DisplayServer_VSyncMode>` **window_get_vsync_mode** **(** :ref:`int<class_int>` window_id=0 **)** |const|
 
-Returns the VSync mode of the given window.
+Returns the V-Sync mode of the given window.
+
+----
+
+.. _class_DisplayServer_method_window_maximize_on_title_dbl_click:
+
+- :ref:`bool<class_bool>` **window_maximize_on_title_dbl_click** **(** **)** |const|
+
+Returns ``true``, if double-click on a window title should maximize it.
+
+\ **Note:** This method is implemented on macOS.
+
+----
+
+.. _class_DisplayServer_method_window_minimize_on_title_dbl_click:
+
+- :ref:`bool<class_bool>` **window_minimize_on_title_dbl_click** **(** **)** |const|
+
+Returns ``true``, if double-click on a window title should minimize it.
+
+\ **Note:** This method is implemented on macOS.
 
 ----
 
@@ -2074,7 +2202,7 @@ Sets the title of the given window to ``title``.
 
 - void **window_set_vsync_mode** **(** :ref:`VSyncMode<enum_DisplayServer_VSyncMode>` vsync_mode, :ref:`int<class_int>` window_id=0 **)**
 
-Sets the VSync mode of the given window.
+Sets the V-Sync mode of the given window.
 
 See :ref:`VSyncMode<enum_DisplayServer_VSyncMode>` for possible values and how they affect the behavior of your application.
 

+ 1 - 1
classes/class_dtlsserver.rst

@@ -183,7 +183,7 @@ Method Descriptions
 
 - :ref:`Error<enum_@GlobalScope_Error>` **setup** **(** :ref:`CryptoKey<class_CryptoKey>` key, :ref:`X509Certificate<class_X509Certificate>` certificate, :ref:`X509Certificate<class_X509Certificate>` chain=null **)**
 
-Setup the DTLS server to use the given ``private_key`` and provide the given ``certificate`` to clients. You can pass the optional ``chain`` parameter to provide additional CA chain information along with the certificate.
+Setup the DTLS server to use the given ``key`` and provide the given ``certificate`` to clients. You can pass the optional ``chain`` parameter to provide additional CA chain information along with the certificate.
 
 ----
 

+ 1 - 1
classes/class_editorfeatureprofile.rst

@@ -142,7 +142,7 @@ Loads an editor feature profile from a file. The file must follow the JSON forma
 
 - :ref:`Error<enum_@GlobalScope_Error>` **save_to_file** **(** :ref:`String<class_String>` path **)**
 
-Saves the editor feature profile to a file in JSON format. It can then be imported using the feature profile manager's **Import** button or the :ref:`load_from_file<class_EditorFeatureProfile_method_load_from_file>` button.
+Saves the editor feature profile to a file in JSON format. It can then be imported using the feature profile manager's **Import** button or the :ref:`load_from_file<class_EditorFeatureProfile_method_load_from_file>` method.
 
 ----
 

+ 2 - 2
classes/class_editorimportplugin.rst

@@ -140,7 +140,7 @@ Methods
 -------
 
 +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                         | :ref:`_get_import_options<class_EditorImportPlugin_method__get_import_options>` **(** :ref:`String<class_String>` path, :ref:`int<class_int>` preset_index **)** |virtual| |const|                                                                                                                  |
+| :ref:`Dictionary[]<class_Dictionary>`             | :ref:`_get_import_options<class_EditorImportPlugin_method__get_import_options>` **(** :ref:`String<class_String>` path, :ref:`int<class_int>` preset_index **)** |virtual| |const|                                                                                                                  |
 +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                             | :ref:`_get_import_order<class_EditorImportPlugin_method__get_import_order>` **(** **)** |virtual| |const|                                                                                                                                                                                           |
 +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -170,7 +170,7 @@ Method Descriptions
 
 .. _class_EditorImportPlugin_method__get_import_options:
 
-- :ref:`Array<class_Array>` **_get_import_options** **(** :ref:`String<class_String>` path, :ref:`int<class_int>` preset_index **)** |virtual| |const|
+- :ref:`Dictionary[]<class_Dictionary>` **_get_import_options** **(** :ref:`String<class_String>` path, :ref:`int<class_int>` preset_index **)** |virtual| |const|
 
 Gets the options and default values for the preset at this index. Returns an Array of Dictionaries with the following keys: ``name``, ``default_value``, ``property_hint`` (optional), ``hint_string`` (optional), ``usage`` (optional).
 

+ 14 - 4
classes/class_editorinterface.rst

@@ -58,7 +58,7 @@ Methods
 +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`EditorInspector<class_EditorInspector>`             | :ref:`get_inspector<class_EditorInterface_method_get_inspector>` **(** **)** |const|                                                                                                                                |
 +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                                 | :ref:`get_open_scenes<class_EditorInterface_method_get_open_scenes>` **(** **)** |const|                                                                                                                            |
+| :ref:`PackedStringArray<class_PackedStringArray>`         | :ref:`get_open_scenes<class_EditorInterface_method_get_open_scenes>` **(** **)** |const|                                                                                                                            |
 +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`String<class_String>`                               | :ref:`get_playing_scene<class_EditorInterface_method_get_playing_scene>` **(** **)** |const|                                                                                                                        |
 +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -78,7 +78,7 @@ Methods
 +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                                   | :ref:`is_plugin_enabled<class_EditorInterface_method_is_plugin_enabled>` **(** :ref:`String<class_String>` plugin **)** |const|                                                                                     |
 +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                                 | :ref:`make_mesh_previews<class_EditorInterface_method_make_mesh_previews>` **(** :ref:`Array<class_Array>` meshes, :ref:`int<class_int>` preview_size **)**                                                         |
+| :ref:`Texture2D[]<class_Texture2D>`                       | :ref:`make_mesh_previews<class_EditorInterface_method_make_mesh_previews>` **(** :ref:`Array<class_Array>` meshes, :ref:`int<class_int>` preview_size **)**                                                         |
 +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                                      | :ref:`open_scene_from_path<class_EditorInterface_method_open_scene_from_path>` **(** :ref:`String<class_String>` scene_filepath **)**                                                                               |
 +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -90,6 +90,8 @@ Methods
 +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                                      | :ref:`reload_scene_from_path<class_EditorInterface_method_reload_scene_from_path>` **(** :ref:`String<class_String>` scene_filepath **)**                                                                           |
 +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`restart_editor<class_EditorInterface_method_restart_editor>` **(** :ref:`bool<class_bool>` save=true **)**                                                                                                    |
++-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Error<enum_@GlobalScope_Error>`                     | :ref:`save_scene<class_EditorInterface_method_save_scene>` **(** **)**                                                                                                                                              |
 +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                                      | :ref:`save_scene_as<class_EditorInterface_method_save_scene_as>` **(** :ref:`String<class_String>` path, :ref:`bool<class_bool>` with_preview=true **)**                                                            |
@@ -239,7 +241,7 @@ Returns the editor's :ref:`EditorInspector<class_EditorInspector>` instance.
 
 .. _class_EditorInterface_method_get_open_scenes:
 
-- :ref:`Array<class_Array>` **get_open_scenes** **(** **)** |const|
+- :ref:`PackedStringArray<class_PackedStringArray>` **get_open_scenes** **(** **)** |const|
 
 Returns an :ref:`Array<class_Array>` with the file paths of the currently opened scenes.
 
@@ -321,7 +323,7 @@ Returns ``true`` if the specified ``plugin`` is enabled. The plugin name is the
 
 .. _class_EditorInterface_method_make_mesh_previews:
 
-- :ref:`Array<class_Array>` **make_mesh_previews** **(** :ref:`Array<class_Array>` meshes, :ref:`int<class_int>` preview_size **)**
+- :ref:`Texture2D[]<class_Texture2D>` **make_mesh_previews** **(** :ref:`Array<class_Array>` meshes, :ref:`int<class_int>` preview_size **)**
 
 Returns mesh previews rendered at the given size as an :ref:`Array<class_Array>` of :ref:`Texture2D<class_Texture2D>`\ s.
 
@@ -367,6 +369,14 @@ Reloads the scene at the given path.
 
 ----
 
+.. _class_EditorInterface_method_restart_editor:
+
+- void **restart_editor** **(** :ref:`bool<class_bool>` save=true **)**
+
+Restarts the editor. This closes the editor and then opens the same project. If ``save`` is ``true``, the project will be saved before restarting.
+
+----
+
 .. _class_EditorInterface_method_save_scene:
 
 - :ref:`Error<enum_@GlobalScope_Error>` **save_scene** **(** **)**

+ 3 - 3
classes/class_editornode3dgizmo.rst

@@ -91,9 +91,9 @@ The ``secondary`` argument is ``true`` when the committed handle is secondary (s
 
 - void **_commit_subgizmos** **(** :ref:`PackedInt32Array<class_PackedInt32Array>` ids, :ref:`Transform3D[]<class_Transform3D>` restores, :ref:`bool<class_bool>` cancel **)** |virtual|
 
-Override this method to commit a group of subgizmos being edited (see :ref:`_subgizmos_intersect_ray<class_EditorNode3DGizmo_method__subgizmos_intersect_ray>` and :ref:`_subgizmos_intersect_frustum<class_EditorNode3DGizmo_method__subgizmos_intersect_frustum>`). This usually means creating an :ref:`UndoRedo<class_UndoRedo>` action for the change, using the current transforms as "do" and the ``restore`` transforms as "undo".
+Override this method to commit a group of subgizmos being edited (see :ref:`_subgizmos_intersect_ray<class_EditorNode3DGizmo_method__subgizmos_intersect_ray>` and :ref:`_subgizmos_intersect_frustum<class_EditorNode3DGizmo_method__subgizmos_intersect_frustum>`). This usually means creating an :ref:`UndoRedo<class_UndoRedo>` action for the change, using the current transforms as "do" and the ``restores`` transforms as "undo".
 
-If the ``cancel`` argument is ``true``, the ``restore`` transforms should be directly set, without any :ref:`UndoRedo<class_UndoRedo>` action.
+If the ``cancel`` argument is ``true``, the ``restores`` transforms should be directly set, without any :ref:`UndoRedo<class_UndoRedo>` action.
 
 ----
 
@@ -199,7 +199,7 @@ Adds collision triangles to the gizmo for picking. A :ref:`TriangleMesh<class_Tr
 
 Adds a list of handles (points) which can be used to edit the properties of the gizmo's Node3D. The ``ids`` argument can be used to specify a custom identifier for each handle, if an empty ``Array`` is passed, the ids will be assigned automatically from the ``handles`` argument order.
 
-The ``secondary`` argument marks the added handles as secondary, meaning they will normally have less selection priority than regular handles. When the user is holding the shift key secondary handles will switch to have higher priority than regular handles. This change in priority can be used to place multiple handles at the same point while still giving the user control on their selection.
+The ``secondary`` argument marks the added handles as secondary, meaning they will normally have lower selection priority than regular handles. When the user is holding the shift key secondary handles will switch to have higher priority than regular handles. This change in priority can be used to place multiple handles at the same point while still giving the user control on their selection.
 
 There are virtual methods which will be called upon editing of these handles. Call this method during :ref:`_redraw<class_EditorNode3DGizmo_method__redraw>`.
 

+ 5 - 5
classes/class_editornode3dgizmoplugin.rst

@@ -104,9 +104,9 @@ Called for this plugin's active gizmos.
 
 - void **_commit_subgizmos** **(** :ref:`EditorNode3DGizmo<class_EditorNode3DGizmo>` gizmo, :ref:`PackedInt32Array<class_PackedInt32Array>` ids, :ref:`Transform3D[]<class_Transform3D>` restores, :ref:`bool<class_bool>` cancel **)** |virtual|
 
-Override this method to commit a group of subgizmos being edited (see :ref:`_subgizmos_intersect_ray<class_EditorNode3DGizmoPlugin_method__subgizmos_intersect_ray>` and :ref:`_subgizmos_intersect_frustum<class_EditorNode3DGizmoPlugin_method__subgizmos_intersect_frustum>`). This usually means creating an :ref:`UndoRedo<class_UndoRedo>` action for the change, using the current transforms as "do" and the ``restore`` transforms as "undo".
+Override this method to commit a group of subgizmos being edited (see :ref:`_subgizmos_intersect_ray<class_EditorNode3DGizmoPlugin_method__subgizmos_intersect_ray>` and :ref:`_subgizmos_intersect_frustum<class_EditorNode3DGizmoPlugin_method__subgizmos_intersect_frustum>`). This usually means creating an :ref:`UndoRedo<class_UndoRedo>` action for the change, using the current transforms as "do" and the ``restores`` transforms as "undo".
 
-If the ``cancel`` argument is ``true``, the ``restore`` transforms should be directly set, without any :ref:`UndoRedo<class_UndoRedo>` action. As with all subgizmo methods, transforms are given in local space respect to the gizmo's Node3D. Called for this plugin's active gizmos.
+If the ``cancel`` argument is ``true``, the ``restores`` transforms should be directly set, without any :ref:`UndoRedo<class_UndoRedo>` action. As with all subgizmo methods, transforms are given in local space respect to the gizmo's Node3D. Called for this plugin's active gizmos.
 
 ----
 
@@ -200,7 +200,7 @@ Override this method to add all the gizmo elements whenever a gizmo update is re
 
 - void **_set_handle** **(** :ref:`EditorNode3DGizmo<class_EditorNode3DGizmo>` gizmo, :ref:`int<class_int>` handle_id, :ref:`bool<class_bool>` secondary, :ref:`Camera3D<class_Camera3D>` camera, :ref:`Vector2<class_Vector2>` screen_pos **)** |virtual|
 
-Override this method to update the node's properties when the user drags a gizmo handle (previously added with :ref:`EditorNode3DGizmo.add_handles<class_EditorNode3DGizmo_method_add_handles>`). The provided ``point`` is the mouse position in screen coordinates and the ``camera`` can be used to convert it to raycasts.
+Override this method to update the node's properties when the user drags a gizmo handle (previously added with :ref:`EditorNode3DGizmo.add_handles<class_EditorNode3DGizmo_method_add_handles>`). The provided ``screen_pos`` is the mouse position in screen coordinates and the ``camera`` can be used to convert it to raycasts.
 
 The ``secondary`` argument is ``true`` when the edited handle is secondary (see :ref:`EditorNode3DGizmo.add_handles<class_EditorNode3DGizmo_method_add_handles>` for more information).
 
@@ -220,7 +220,7 @@ Override this method to update the node properties during subgizmo editing (see
 
 - :ref:`PackedInt32Array<class_PackedInt32Array>` **_subgizmos_intersect_frustum** **(** :ref:`EditorNode3DGizmo<class_EditorNode3DGizmo>` gizmo, :ref:`Camera3D<class_Camera3D>` camera, :ref:`Plane[]<class_Plane>` frustum_planes **)** |virtual| |const|
 
-Override this method to allow selecting subgizmos using mouse drag box selection. Given a ``camera`` and a ``frustum``, this method should return which subgizmos are contained within the frustum. The ``frustum`` argument consists of an ``Array`` with all the ``Plane``\ s that make up the selection frustum. The returned value should contain a list of unique subgizmo identifiers, these identifiers can have any non-negative value and will be used in other virtual methods like :ref:`_get_subgizmo_transform<class_EditorNode3DGizmoPlugin_method__get_subgizmo_transform>` or :ref:`_commit_subgizmos<class_EditorNode3DGizmoPlugin_method__commit_subgizmos>`.  Called for this plugin's active gizmos.
+Override this method to allow selecting subgizmos using mouse drag box selection. Given a ``camera`` and ``frustum_planes``, this method should return which subgizmos are contained within the frustums. The ``frustum_planes`` argument consists of an ``Array`` with all the ``Plane``\ s that make up the selection frustum. The returned value should contain a list of unique subgizmo identifiers, these identifiers can have any non-negative value and will be used in other virtual methods like :ref:`_get_subgizmo_transform<class_EditorNode3DGizmoPlugin_method__get_subgizmo_transform>` or :ref:`_commit_subgizmos<class_EditorNode3DGizmoPlugin_method__commit_subgizmos>`.  Called for this plugin's active gizmos.
 
 ----
 
@@ -228,7 +228,7 @@ Override this method to allow selecting subgizmos using mouse drag box selection
 
 - :ref:`int<class_int>` **_subgizmos_intersect_ray** **(** :ref:`EditorNode3DGizmo<class_EditorNode3DGizmo>` gizmo, :ref:`Camera3D<class_Camera3D>` camera, :ref:`Vector2<class_Vector2>` screen_pos **)** |virtual| |const|
 
-Override this method to allow selecting subgizmos using mouse clicks. Given a ``camera`` and a ``point`` in screen coordinates, this method should return which subgizmo should be selected. The returned value should be a unique subgizmo identifier, which can have any non-negative value and will be used in other virtual methods like :ref:`_get_subgizmo_transform<class_EditorNode3DGizmoPlugin_method__get_subgizmo_transform>` or :ref:`_commit_subgizmos<class_EditorNode3DGizmoPlugin_method__commit_subgizmos>`. Called for this plugin's active gizmos.
+Override this method to allow selecting subgizmos using mouse clicks. Given a ``camera`` and a ``screen_pos`` in screen coordinates, this method should return which subgizmo should be selected. The returned value should be a unique subgizmo identifier, which can have any non-negative value and will be used in other virtual methods like :ref:`_get_subgizmo_transform<class_EditorNode3DGizmoPlugin_method__get_subgizmo_transform>` or :ref:`_commit_subgizmos<class_EditorNode3DGizmoPlugin_method__commit_subgizmos>`. Called for this plugin's active gizmos.
 
 ----
 

+ 21 - 11
classes/class_editorpaths.rst

@@ -31,17 +31,19 @@ Tutorials
 Methods
 -------
 
-+-----------------------------+------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>` | :ref:`get_cache_dir<class_EditorPaths_method_get_cache_dir>` **(** **)** |const|                     |
-+-----------------------------+------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>` | :ref:`get_config_dir<class_EditorPaths_method_get_config_dir>` **(** **)** |const|                   |
-+-----------------------------+------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>` | :ref:`get_data_dir<class_EditorPaths_method_get_data_dir>` **(** **)** |const|                       |
-+-----------------------------+------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>` | :ref:`get_self_contained_file<class_EditorPaths_method_get_self_contained_file>` **(** **)** |const| |
-+-----------------------------+------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`     | :ref:`is_self_contained<class_EditorPaths_method_is_self_contained>` **(** **)** |const|             |
-+-----------------------------+------------------------------------------------------------------------------------------------------+
++-----------------------------+--------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>` | :ref:`get_cache_dir<class_EditorPaths_method_get_cache_dir>` **(** **)** |const|                       |
++-----------------------------+--------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>` | :ref:`get_config_dir<class_EditorPaths_method_get_config_dir>` **(** **)** |const|                     |
++-----------------------------+--------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>` | :ref:`get_data_dir<class_EditorPaths_method_get_data_dir>` **(** **)** |const|                         |
++-----------------------------+--------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>` | :ref:`get_project_settings_dir<class_EditorPaths_method_get_project_settings_dir>` **(** **)** |const| |
++-----------------------------+--------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>` | :ref:`get_self_contained_file<class_EditorPaths_method_get_self_contained_file>` **(** **)** |const|   |
++-----------------------------+--------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`     | :ref:`is_self_contained<class_EditorPaths_method_is_self_contained>` **(** **)** |const|               |
++-----------------------------+--------------------------------------------------------------------------------------------------------+
 
 Method Descriptions
 -------------------
@@ -94,6 +96,14 @@ Returns the absolute path to the user's data folder. This folder should be used
 
 ----
 
+.. _class_EditorPaths_method_get_project_settings_dir:
+
+- :ref:`String<class_String>` **get_project_settings_dir** **(** **)** |const|
+
+Returns the project-specific editor settings path. Projects all have a unique subdirectory inside the settings path where project-specific editor settings are saved.
+
+----
+
 .. _class_EditorPaths_method_get_self_contained_file:
 
 - :ref:`String<class_String>` **get_self_contained_file** **(** **)** |const|

+ 132 - 132
classes/class_editorplugin.rst

@@ -27,135 +27,135 @@ Tutorials
 Methods
 -------
 
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`_apply_changes<class_EditorPlugin_method__apply_changes>` **(** **)** |virtual|                                                                                                                                                                 |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                             | :ref:`_build<class_EditorPlugin_method__build>` **(** **)** |virtual|                                                                                                                                                                                 |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`_clear<class_EditorPlugin_method__clear>` **(** **)** |virtual|                                                                                                                                                                                 |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`_disable_plugin<class_EditorPlugin_method__disable_plugin>` **(** **)** |virtual|                                                                                                                                                               |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`_edit<class_EditorPlugin_method__edit>` **(** :ref:`Variant<class_Variant>` object **)** |virtual|                                                                                                                                              |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`_enable_plugin<class_EditorPlugin_method__enable_plugin>` **(** **)** |virtual|                                                                                                                                                                 |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`_forward_3d_draw_over_viewport<class_EditorPlugin_method__forward_3d_draw_over_viewport>` **(** :ref:`Control<class_Control>` viewport_control **)** |virtual|                                                                                  |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`_forward_3d_force_draw_over_viewport<class_EditorPlugin_method__forward_3d_force_draw_over_viewport>` **(** :ref:`Control<class_Control>` viewport_control **)** |virtual|                                                                      |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                               | :ref:`_forward_3d_gui_input<class_EditorPlugin_method__forward_3d_gui_input>` **(** :ref:`Camera3D<class_Camera3D>` viewport_camera, :ref:`InputEvent<class_InputEvent>` event **)** |virtual|                                                        |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`_forward_canvas_draw_over_viewport<class_EditorPlugin_method__forward_canvas_draw_over_viewport>` **(** :ref:`Control<class_Control>` viewport_control **)** |virtual|                                                                          |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`_forward_canvas_force_draw_over_viewport<class_EditorPlugin_method__forward_canvas_force_draw_over_viewport>` **(** :ref:`Control<class_Control>` viewport_control **)** |virtual|                                                              |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                             | :ref:`_forward_canvas_gui_input<class_EditorPlugin_method__forward_canvas_gui_input>` **(** :ref:`InputEvent<class_InputEvent>` event **)** |virtual|                                                                                                 |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PackedStringArray<class_PackedStringArray>`   | :ref:`_get_breakpoints<class_EditorPlugin_method__get_breakpoints>` **(** **)** |virtual| |const|                                                                                                                                                     |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Texture2D<class_Texture2D>`                   | :ref:`_get_plugin_icon<class_EditorPlugin_method__get_plugin_icon>` **(** **)** |virtual| |const|                                                                                                                                                     |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                         | :ref:`_get_plugin_name<class_EditorPlugin_method__get_plugin_name>` **(** **)** |virtual| |const|                                                                                                                                                     |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Dictionary<class_Dictionary>`                 | :ref:`_get_state<class_EditorPlugin_method__get_state>` **(** **)** |virtual| |const|                                                                                                                                                                 |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`_get_window_layout<class_EditorPlugin_method__get_window_layout>` **(** :ref:`ConfigFile<class_ConfigFile>` configuration **)** |virtual|                                                                                                       |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                             | :ref:`_handles<class_EditorPlugin_method__handles>` **(** :ref:`Variant<class_Variant>` object **)** |virtual| |const|                                                                                                                                |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                             | :ref:`_has_main_screen<class_EditorPlugin_method__has_main_screen>` **(** **)** |virtual| |const|                                                                                                                                                     |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`_make_visible<class_EditorPlugin_method__make_visible>` **(** :ref:`bool<class_bool>` visible **)** |virtual|                                                                                                                                   |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`_save_external_data<class_EditorPlugin_method__save_external_data>` **(** **)** |virtual|                                                                                                                                                       |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`_set_state<class_EditorPlugin_method__set_state>` **(** :ref:`Dictionary<class_Dictionary>` state **)** |virtual|                                                                                                                               |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`_set_window_layout<class_EditorPlugin_method__set_window_layout>` **(** :ref:`ConfigFile<class_ConfigFile>` configuration **)** |virtual|                                                                                                       |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`add_autoload_singleton<class_EditorPlugin_method_add_autoload_singleton>` **(** :ref:`String<class_String>` name, :ref:`String<class_String>` path **)**                                                                                        |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Button<class_Button>`                         | :ref:`add_control_to_bottom_panel<class_EditorPlugin_method_add_control_to_bottom_panel>` **(** :ref:`Control<class_Control>` control, :ref:`String<class_String>` title **)**                                                                        |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`add_control_to_container<class_EditorPlugin_method_add_control_to_container>` **(** :ref:`CustomControlContainer<enum_EditorPlugin_CustomControlContainer>` container, :ref:`Control<class_Control>` control **)**                              |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`add_control_to_dock<class_EditorPlugin_method_add_control_to_dock>` **(** :ref:`DockSlot<enum_EditorPlugin_DockSlot>` slot, :ref:`Control<class_Control>` control **)**                                                                         |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`add_custom_type<class_EditorPlugin_method_add_custom_type>` **(** :ref:`String<class_String>` type, :ref:`String<class_String>` base, :ref:`Script<class_Script>` script, :ref:`Texture2D<class_Texture2D>` icon **)**                          |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`add_debugger_plugin<class_EditorPlugin_method_add_debugger_plugin>` **(** :ref:`Script<class_Script>` script **)**                                                                                                                              |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`add_export_plugin<class_EditorPlugin_method_add_export_plugin>` **(** :ref:`EditorExportPlugin<class_EditorExportPlugin>` plugin **)**                                                                                                          |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`add_import_plugin<class_EditorPlugin_method_add_import_plugin>` **(** :ref:`EditorImportPlugin<class_EditorImportPlugin>` importer, :ref:`bool<class_bool>` first_priority=false **)**                                                          |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`add_inspector_plugin<class_EditorPlugin_method_add_inspector_plugin>` **(** :ref:`EditorInspectorPlugin<class_EditorInspectorPlugin>` plugin **)**                                                                                              |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`add_scene_format_importer_plugin<class_EditorPlugin_method_add_scene_format_importer_plugin>` **(** :ref:`EditorSceneFormatImporter<class_EditorSceneFormatImporter>` scene_format_importer, :ref:`bool<class_bool>` first_priority=false **)** |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`add_scene_post_import_plugin<class_EditorPlugin_method_add_scene_post_import_plugin>` **(** :ref:`EditorScenePostImportPlugin<class_EditorScenePostImportPlugin>` scene_import_plugin, :ref:`bool<class_bool>` first_priority=false **)**       |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`add_spatial_gizmo_plugin<class_EditorPlugin_method_add_spatial_gizmo_plugin>` **(** :ref:`EditorNode3DGizmoPlugin<class_EditorNode3DGizmoPlugin>` plugin **)**                                                                                  |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`add_tool_menu_item<class_EditorPlugin_method_add_tool_menu_item>` **(** :ref:`String<class_String>` name, :ref:`Callable<class_Callable>` callable **)**                                                                                        |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`add_tool_submenu_item<class_EditorPlugin_method_add_tool_submenu_item>` **(** :ref:`String<class_String>` name, :ref:`PopupMenu<class_PopupMenu>` submenu **)**                                                                                 |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`add_translation_parser_plugin<class_EditorPlugin_method_add_translation_parser_plugin>` **(** :ref:`EditorTranslationParserPlugin<class_EditorTranslationParserPlugin>` parser **)**                                                            |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`add_undo_redo_inspector_hook_callback<class_EditorPlugin_method_add_undo_redo_inspector_hook_callback>` **(** :ref:`Callable<class_Callable>` callable **)**                                                                                    |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`EditorInterface<class_EditorInterface>`       | :ref:`get_editor_interface<class_EditorPlugin_method_get_editor_interface>` **(** **)**                                                                                                                                                               |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PopupMenu<class_PopupMenu>`                   | :ref:`get_export_as_menu<class_EditorPlugin_method_get_export_as_menu>` **(** **)**                                                                                                                                                                   |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`ScriptCreateDialog<class_ScriptCreateDialog>` | :ref:`get_script_create_dialog<class_EditorPlugin_method_get_script_create_dialog>` **(** **)**                                                                                                                                                       |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`UndoRedo<class_UndoRedo>`                     | :ref:`get_undo_redo<class_EditorPlugin_method_get_undo_redo>` **(** **)**                                                                                                                                                                             |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`hide_bottom_panel<class_EditorPlugin_method_hide_bottom_panel>` **(** **)**                                                                                                                                                                     |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`make_bottom_panel_item_visible<class_EditorPlugin_method_make_bottom_panel_item_visible>` **(** :ref:`Control<class_Control>` item **)**                                                                                                        |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`queue_save_layout<class_EditorPlugin_method_queue_save_layout>` **(** **)**                                                                                                                                                                     |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`remove_autoload_singleton<class_EditorPlugin_method_remove_autoload_singleton>` **(** :ref:`String<class_String>` name **)**                                                                                                                    |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`remove_control_from_bottom_panel<class_EditorPlugin_method_remove_control_from_bottom_panel>` **(** :ref:`Control<class_Control>` control **)**                                                                                                 |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`remove_control_from_container<class_EditorPlugin_method_remove_control_from_container>` **(** :ref:`CustomControlContainer<enum_EditorPlugin_CustomControlContainer>` container, :ref:`Control<class_Control>` control **)**                    |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`remove_control_from_docks<class_EditorPlugin_method_remove_control_from_docks>` **(** :ref:`Control<class_Control>` control **)**                                                                                                               |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`remove_custom_type<class_EditorPlugin_method_remove_custom_type>` **(** :ref:`String<class_String>` type **)**                                                                                                                                  |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`remove_debugger_plugin<class_EditorPlugin_method_remove_debugger_plugin>` **(** :ref:`Script<class_Script>` script **)**                                                                                                                        |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`remove_export_plugin<class_EditorPlugin_method_remove_export_plugin>` **(** :ref:`EditorExportPlugin<class_EditorExportPlugin>` plugin **)**                                                                                                    |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`remove_import_plugin<class_EditorPlugin_method_remove_import_plugin>` **(** :ref:`EditorImportPlugin<class_EditorImportPlugin>` importer **)**                                                                                                  |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`remove_inspector_plugin<class_EditorPlugin_method_remove_inspector_plugin>` **(** :ref:`EditorInspectorPlugin<class_EditorInspectorPlugin>` plugin **)**                                                                                        |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`remove_scene_format_importer_plugin<class_EditorPlugin_method_remove_scene_format_importer_plugin>` **(** :ref:`EditorSceneFormatImporter<class_EditorSceneFormatImporter>` scene_format_importer **)**                                         |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`remove_scene_post_import_plugin<class_EditorPlugin_method_remove_scene_post_import_plugin>` **(** :ref:`EditorScenePostImportPlugin<class_EditorScenePostImportPlugin>` scene_import_plugin **)**                                               |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`remove_spatial_gizmo_plugin<class_EditorPlugin_method_remove_spatial_gizmo_plugin>` **(** :ref:`EditorNode3DGizmoPlugin<class_EditorNode3DGizmoPlugin>` plugin **)**                                                                            |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`remove_tool_menu_item<class_EditorPlugin_method_remove_tool_menu_item>` **(** :ref:`String<class_String>` name **)**                                                                                                                            |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`remove_translation_parser_plugin<class_EditorPlugin_method_remove_translation_parser_plugin>` **(** :ref:`EditorTranslationParserPlugin<class_EditorTranslationParserPlugin>` parser **)**                                                      |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`remove_undo_redo_inspector_hook_callback<class_EditorPlugin_method_remove_undo_redo_inspector_hook_callback>` **(** :ref:`Callable<class_Callable>` callable **)**                                                                              |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`set_force_draw_over_forwarding_enabled<class_EditorPlugin_method_set_force_draw_over_forwarding_enabled>` **(** **)**                                                                                                                           |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`set_input_event_forwarding_always_enabled<class_EditorPlugin_method_set_input_event_forwarding_always_enabled>` **(** **)**                                                                                                                     |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                               | :ref:`update_overlays<class_EditorPlugin_method_update_overlays>` **(** **)** |const|                                                                                                                                                                 |
-+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`_apply_changes<class_EditorPlugin_method__apply_changes>` **(** **)** |virtual|                                                                                                                                                                 |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                   | :ref:`_build<class_EditorPlugin_method__build>` **(** **)** |virtual|                                                                                                                                                                                 |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`_clear<class_EditorPlugin_method__clear>` **(** **)** |virtual|                                                                                                                                                                                 |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`_disable_plugin<class_EditorPlugin_method__disable_plugin>` **(** **)** |virtual|                                                                                                                                                               |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`_edit<class_EditorPlugin_method__edit>` **(** :ref:`Variant<class_Variant>` object **)** |virtual|                                                                                                                                              |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`_enable_plugin<class_EditorPlugin_method__enable_plugin>` **(** **)** |virtual|                                                                                                                                                                 |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`_forward_3d_draw_over_viewport<class_EditorPlugin_method__forward_3d_draw_over_viewport>` **(** :ref:`Control<class_Control>` viewport_control **)** |virtual|                                                                                  |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`_forward_3d_force_draw_over_viewport<class_EditorPlugin_method__forward_3d_force_draw_over_viewport>` **(** :ref:`Control<class_Control>` viewport_control **)** |virtual|                                                                      |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                     | :ref:`_forward_3d_gui_input<class_EditorPlugin_method__forward_3d_gui_input>` **(** :ref:`Camera3D<class_Camera3D>` viewport_camera, :ref:`InputEvent<class_InputEvent>` event **)** |virtual|                                                        |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`_forward_canvas_draw_over_viewport<class_EditorPlugin_method__forward_canvas_draw_over_viewport>` **(** :ref:`Control<class_Control>` viewport_control **)** |virtual|                                                                          |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`_forward_canvas_force_draw_over_viewport<class_EditorPlugin_method__forward_canvas_force_draw_over_viewport>` **(** :ref:`Control<class_Control>` viewport_control **)** |virtual|                                                              |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                   | :ref:`_forward_canvas_gui_input<class_EditorPlugin_method__forward_canvas_gui_input>` **(** :ref:`InputEvent<class_InputEvent>` event **)** |virtual|                                                                                                 |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedStringArray<class_PackedStringArray>`         | :ref:`_get_breakpoints<class_EditorPlugin_method__get_breakpoints>` **(** **)** |virtual| |const|                                                                                                                                                     |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Texture2D<class_Texture2D>`                         | :ref:`_get_plugin_icon<class_EditorPlugin_method__get_plugin_icon>` **(** **)** |virtual| |const|                                                                                                                                                     |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                               | :ref:`_get_plugin_name<class_EditorPlugin_method__get_plugin_name>` **(** **)** |virtual| |const|                                                                                                                                                     |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>`                       | :ref:`_get_state<class_EditorPlugin_method__get_state>` **(** **)** |virtual| |const|                                                                                                                                                                 |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`_get_window_layout<class_EditorPlugin_method__get_window_layout>` **(** :ref:`ConfigFile<class_ConfigFile>` configuration **)** |virtual|                                                                                                       |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                   | :ref:`_handles<class_EditorPlugin_method__handles>` **(** :ref:`Variant<class_Variant>` object **)** |virtual| |const|                                                                                                                                |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                   | :ref:`_has_main_screen<class_EditorPlugin_method__has_main_screen>` **(** **)** |virtual| |const|                                                                                                                                                     |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`_make_visible<class_EditorPlugin_method__make_visible>` **(** :ref:`bool<class_bool>` visible **)** |virtual|                                                                                                                                   |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`_save_external_data<class_EditorPlugin_method__save_external_data>` **(** **)** |virtual|                                                                                                                                                       |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`_set_state<class_EditorPlugin_method__set_state>` **(** :ref:`Dictionary<class_Dictionary>` state **)** |virtual|                                                                                                                               |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`_set_window_layout<class_EditorPlugin_method__set_window_layout>` **(** :ref:`ConfigFile<class_ConfigFile>` configuration **)** |virtual|                                                                                                       |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`add_autoload_singleton<class_EditorPlugin_method_add_autoload_singleton>` **(** :ref:`String<class_String>` name, :ref:`String<class_String>` path **)**                                                                                        |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Button<class_Button>`                               | :ref:`add_control_to_bottom_panel<class_EditorPlugin_method_add_control_to_bottom_panel>` **(** :ref:`Control<class_Control>` control, :ref:`String<class_String>` title **)**                                                                        |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`add_control_to_container<class_EditorPlugin_method_add_control_to_container>` **(** :ref:`CustomControlContainer<enum_EditorPlugin_CustomControlContainer>` container, :ref:`Control<class_Control>` control **)**                              |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`add_control_to_dock<class_EditorPlugin_method_add_control_to_dock>` **(** :ref:`DockSlot<enum_EditorPlugin_DockSlot>` slot, :ref:`Control<class_Control>` control **)**                                                                         |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`add_custom_type<class_EditorPlugin_method_add_custom_type>` **(** :ref:`String<class_String>` type, :ref:`String<class_String>` base, :ref:`Script<class_Script>` script, :ref:`Texture2D<class_Texture2D>` icon **)**                          |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`add_debugger_plugin<class_EditorPlugin_method_add_debugger_plugin>` **(** :ref:`Script<class_Script>` script **)**                                                                                                                              |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`add_export_plugin<class_EditorPlugin_method_add_export_plugin>` **(** :ref:`EditorExportPlugin<class_EditorExportPlugin>` plugin **)**                                                                                                          |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`add_import_plugin<class_EditorPlugin_method_add_import_plugin>` **(** :ref:`EditorImportPlugin<class_EditorImportPlugin>` importer, :ref:`bool<class_bool>` first_priority=false **)**                                                          |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`add_inspector_plugin<class_EditorPlugin_method_add_inspector_plugin>` **(** :ref:`EditorInspectorPlugin<class_EditorInspectorPlugin>` plugin **)**                                                                                              |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`add_scene_format_importer_plugin<class_EditorPlugin_method_add_scene_format_importer_plugin>` **(** :ref:`EditorSceneFormatImporter<class_EditorSceneFormatImporter>` scene_format_importer, :ref:`bool<class_bool>` first_priority=false **)** |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`add_scene_post_import_plugin<class_EditorPlugin_method_add_scene_post_import_plugin>` **(** :ref:`EditorScenePostImportPlugin<class_EditorScenePostImportPlugin>` scene_import_plugin, :ref:`bool<class_bool>` first_priority=false **)**       |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`add_spatial_gizmo_plugin<class_EditorPlugin_method_add_spatial_gizmo_plugin>` **(** :ref:`EditorNode3DGizmoPlugin<class_EditorNode3DGizmoPlugin>` plugin **)**                                                                                  |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`add_tool_menu_item<class_EditorPlugin_method_add_tool_menu_item>` **(** :ref:`String<class_String>` name, :ref:`Callable<class_Callable>` callable **)**                                                                                        |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`add_tool_submenu_item<class_EditorPlugin_method_add_tool_submenu_item>` **(** :ref:`String<class_String>` name, :ref:`PopupMenu<class_PopupMenu>` submenu **)**                                                                                 |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`add_translation_parser_plugin<class_EditorPlugin_method_add_translation_parser_plugin>` **(** :ref:`EditorTranslationParserPlugin<class_EditorTranslationParserPlugin>` parser **)**                                                            |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`add_undo_redo_inspector_hook_callback<class_EditorPlugin_method_add_undo_redo_inspector_hook_callback>` **(** :ref:`Callable<class_Callable>` callable **)**                                                                                    |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`EditorInterface<class_EditorInterface>`             | :ref:`get_editor_interface<class_EditorPlugin_method_get_editor_interface>` **(** **)**                                                                                                                                                               |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PopupMenu<class_PopupMenu>`                         | :ref:`get_export_as_menu<class_EditorPlugin_method_get_export_as_menu>` **(** **)**                                                                                                                                                                   |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`ScriptCreateDialog<class_ScriptCreateDialog>`       | :ref:`get_script_create_dialog<class_EditorPlugin_method_get_script_create_dialog>` **(** **)**                                                                                                                                                       |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`EditorUndoRedoManager<class_EditorUndoRedoManager>` | :ref:`get_undo_redo<class_EditorPlugin_method_get_undo_redo>` **(** **)**                                                                                                                                                                             |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`hide_bottom_panel<class_EditorPlugin_method_hide_bottom_panel>` **(** **)**                                                                                                                                                                     |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`make_bottom_panel_item_visible<class_EditorPlugin_method_make_bottom_panel_item_visible>` **(** :ref:`Control<class_Control>` item **)**                                                                                                        |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`queue_save_layout<class_EditorPlugin_method_queue_save_layout>` **(** **)**                                                                                                                                                                     |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`remove_autoload_singleton<class_EditorPlugin_method_remove_autoload_singleton>` **(** :ref:`String<class_String>` name **)**                                                                                                                    |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`remove_control_from_bottom_panel<class_EditorPlugin_method_remove_control_from_bottom_panel>` **(** :ref:`Control<class_Control>` control **)**                                                                                                 |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`remove_control_from_container<class_EditorPlugin_method_remove_control_from_container>` **(** :ref:`CustomControlContainer<enum_EditorPlugin_CustomControlContainer>` container, :ref:`Control<class_Control>` control **)**                    |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`remove_control_from_docks<class_EditorPlugin_method_remove_control_from_docks>` **(** :ref:`Control<class_Control>` control **)**                                                                                                               |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`remove_custom_type<class_EditorPlugin_method_remove_custom_type>` **(** :ref:`String<class_String>` type **)**                                                                                                                                  |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`remove_debugger_plugin<class_EditorPlugin_method_remove_debugger_plugin>` **(** :ref:`Script<class_Script>` script **)**                                                                                                                        |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`remove_export_plugin<class_EditorPlugin_method_remove_export_plugin>` **(** :ref:`EditorExportPlugin<class_EditorExportPlugin>` plugin **)**                                                                                                    |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`remove_import_plugin<class_EditorPlugin_method_remove_import_plugin>` **(** :ref:`EditorImportPlugin<class_EditorImportPlugin>` importer **)**                                                                                                  |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`remove_inspector_plugin<class_EditorPlugin_method_remove_inspector_plugin>` **(** :ref:`EditorInspectorPlugin<class_EditorInspectorPlugin>` plugin **)**                                                                                        |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`remove_scene_format_importer_plugin<class_EditorPlugin_method_remove_scene_format_importer_plugin>` **(** :ref:`EditorSceneFormatImporter<class_EditorSceneFormatImporter>` scene_format_importer **)**                                         |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`remove_scene_post_import_plugin<class_EditorPlugin_method_remove_scene_post_import_plugin>` **(** :ref:`EditorScenePostImportPlugin<class_EditorScenePostImportPlugin>` scene_import_plugin **)**                                               |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`remove_spatial_gizmo_plugin<class_EditorPlugin_method_remove_spatial_gizmo_plugin>` **(** :ref:`EditorNode3DGizmoPlugin<class_EditorNode3DGizmoPlugin>` plugin **)**                                                                            |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`remove_tool_menu_item<class_EditorPlugin_method_remove_tool_menu_item>` **(** :ref:`String<class_String>` name **)**                                                                                                                            |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`remove_translation_parser_plugin<class_EditorPlugin_method_remove_translation_parser_plugin>` **(** :ref:`EditorTranslationParserPlugin<class_EditorTranslationParserPlugin>` parser **)**                                                      |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`remove_undo_redo_inspector_hook_callback<class_EditorPlugin_method_remove_undo_redo_inspector_hook_callback>` **(** :ref:`Callable<class_Callable>` callable **)**                                                                              |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`set_force_draw_over_forwarding_enabled<class_EditorPlugin_method_set_force_draw_over_forwarding_enabled>` **(** **)**                                                                                                                           |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`set_input_event_forwarding_always_enabled<class_EditorPlugin_method_set_input_event_forwarding_always_enabled>` **(** **)**                                                                                                                     |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                     | :ref:`update_overlays<class_EditorPlugin_method_update_overlays>` **(** **)** |const|                                                                                                                                                                 |
++-----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Signals
 -------
@@ -217,7 +217,7 @@ Enumerations
 
 .. _class_EditorPlugin_constant_CONTAINER_CANVAS_EDITOR_BOTTOM:
 
-.. _class_EditorPlugin_constant_CONTAINER_PROPERTY_EDITOR_BOTTOM:
+.. _class_EditorPlugin_constant_CONTAINER_INSPECTOR_BOTTOM:
 
 .. _class_EditorPlugin_constant_CONTAINER_PROJECT_SETTING_TAB_LEFT:
 
@@ -243,7 +243,7 @@ enum **CustomControlContainer**:
 
 - **CONTAINER_CANVAS_EDITOR_BOTTOM** = **8**
 
-- **CONTAINER_PROPERTY_EDITOR_BOTTOM** = **9**
+- **CONTAINER_INSPECTOR_BOTTOM** = **9**
 
 - **CONTAINER_PROJECT_SETTING_TAB_LEFT** = **10**
 
@@ -939,7 +939,7 @@ Gets the Editor's dialog used for making scripts.
 
 .. _class_EditorPlugin_method_get_undo_redo:
 
-- :ref:`UndoRedo<class_UndoRedo>` **get_undo_redo** **(** **)**
+- :ref:`EditorUndoRedoManager<class_EditorUndoRedoManager>` **get_undo_redo** **(** **)**
 
 Gets the undo/redo object. Most actions in the editor can be undoable, so use this object to make sure this happens when it's worth it.
 

+ 9 - 11
classes/class_editorproperty.rst

@@ -52,8 +52,6 @@ Methods
 +-------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`StringName<class_StringName>` | :ref:`get_edited_property<class_EditorProperty_method_get_edited_property>` **(** **)** |const|                                                                                                                                                    |
 +-------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`         | :ref:`get_tooltip_text<class_EditorProperty_method_get_tooltip_text>` **(** **)** |const|                                                                                                                                                          |
-+-------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                | :ref:`set_bottom_editor<class_EditorProperty_method_set_bottom_editor>` **(** :ref:`Control<class_Control>` editor **)**                                                                                                                           |
 +-------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                | :ref:`update_property<class_EditorProperty_method_update_property>` **(** **)**                                                                                                                                                                    |
@@ -78,9 +76,17 @@ Used by sub-inspectors. Emit it if what was selected was an Object ID.
 
 ----
 
+.. _class_EditorProperty_signal_property_can_revert_changed:
+
+- **property_can_revert_changed** **(** :ref:`StringName<class_StringName>` property, :ref:`bool<class_bool>` can_revert **)**
+
+Emitted when the revertability (i.e., whether it has a non-default value and thus is displayed with a revert icon) of a property has changed.
+
+----
+
 .. _class_EditorProperty_signal_property_changed:
 
-- **property_changed** **(** :ref:`StringName<class_StringName>` property, :ref:`Variant<class_Variant>` value **)**
+- **property_changed** **(** :ref:`StringName<class_StringName>` property, :ref:`Variant<class_Variant>` value, :ref:`StringName<class_StringName>` field, :ref:`bool<class_bool>` changing **)**
 
 Do not emit this manually, use the :ref:`emit_changed<class_EditorProperty_method_emit_changed>` method instead.
 
@@ -298,14 +304,6 @@ Gets the edited property. If your editor is for a single property (added via :re
 
 ----
 
-.. _class_EditorProperty_method_get_tooltip_text:
-
-- :ref:`String<class_String>` **get_tooltip_text** **(** **)** |const|
-
-Must be implemented to provide a custom tooltip to the property editor.
-
-----
-
 .. _class_EditorProperty_method_set_bottom_editor:
 
 - void **set_bottom_editor** **(** :ref:`Control<class_Control>` editor **)**

+ 2 - 2
classes/class_editorresourcepicker.rst

@@ -62,9 +62,9 @@ Emitted when the value of the edited resource was changed.
 
 .. _class_EditorResourcePicker_signal_resource_selected:
 
-- **resource_selected** **(** :ref:`Resource<class_Resource>` resource, :ref:`bool<class_bool>` edit **)**
+- **resource_selected** **(** :ref:`Resource<class_Resource>` resource, :ref:`bool<class_bool>` inspect **)**
 
-Emitted when the resource value was set and user clicked to edit it. When ``edit`` is ``true``, the signal was caused by the context menu "Edit" option.
+Emitted when the resource value was set and user clicked to edit it. When ``inspect`` is ``true``, the signal was caused by the context menu "Edit" or "Inspect" option.
 
 Property Descriptions
 ---------------------

+ 2 - 2
classes/class_editorselection.rst

@@ -31,7 +31,7 @@ Methods
 +---------------------------+--------------------------------------------------------------------------------------------------------------------+
 | :ref:`Node[]<class_Node>` | :ref:`get_selected_nodes<class_EditorSelection_method_get_selected_nodes>` **(** **)**                             |
 +---------------------------+--------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>` | :ref:`get_transformable_selected_nodes<class_EditorSelection_method_get_transformable_selected_nodes>` **(** **)** |
+| :ref:`Node[]<class_Node>` | :ref:`get_transformable_selected_nodes<class_EditorSelection_method_get_transformable_selected_nodes>` **(** **)** |
 +---------------------------+--------------------------------------------------------------------------------------------------------------------+
 | void                      | :ref:`remove_node<class_EditorSelection_method_remove_node>` **(** :ref:`Node<class_Node>` node **)**              |
 +---------------------------+--------------------------------------------------------------------------------------------------------------------+
@@ -76,7 +76,7 @@ Gets the list of selected nodes.
 
 .. _class_EditorSelection_method_get_transformable_selected_nodes:
 
-- :ref:`Array<class_Array>` **get_transformable_selected_nodes** **(** **)**
+- :ref:`Node[]<class_Node>` **get_transformable_selected_nodes** **(** **)**
 
 Gets the list of selected nodes, optimized for transform operations (i.e. moving them, rotating, etc). This list avoids situations where a node is selected and also child/grandchild.
 

Файловите разлики са ограничени, защото са твърде много
+ 2408 - 48
classes/class_editorsettings.rst


+ 6 - 6
classes/class_editorsyntaxhighlighter.rst

@@ -24,11 +24,11 @@ Add a syntax highlighter to an individual script by calling :ref:`ScriptEditorBa
 Methods
 -------
 
-+-----------------------------+------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>` | :ref:`_get_name<class_EditorSyntaxHighlighter_method__get_name>` **(** **)** |virtual| |const|                               |
-+-----------------------------+------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`   | :ref:`_get_supported_languages<class_EditorSyntaxHighlighter_method__get_supported_languages>` **(** **)** |virtual| |const| |
-+-----------------------------+------------------------------------------------------------------------------------------------------------------------------+
++---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                       | :ref:`_get_name<class_EditorSyntaxHighlighter_method__get_name>` **(** **)** |virtual| |const|                               |
++---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`_get_supported_languages<class_EditorSyntaxHighlighter_method__get_supported_languages>` **(** **)** |virtual| |const| |
++---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+
 
 Method Descriptions
 -------------------
@@ -43,7 +43,7 @@ Virtual method which can be overridden to return the syntax highlighter name.
 
 .. _class_EditorSyntaxHighlighter_method__get_supported_languages:
 
-- :ref:`Array<class_Array>` **_get_supported_languages** **(** **)** |virtual| |const|
+- :ref:`PackedStringArray<class_PackedStringArray>` **_get_supported_languages** **(** **)** |virtual| |const|
 
 Virtual method which can be overridden to return the supported language names.
 

+ 184 - 0
classes/class_editorundoredomanager.rst

@@ -0,0 +1,184 @@
+:github_url: hide
+
+.. DO NOT EDIT THIS FILE!!!
+.. Generated automatically from Godot engine sources.
+.. Generator: https://github.com/godotengine/godot/tree/master/doc/tools/make_rst.py.
+.. XML source: https://github.com/godotengine/godot/tree/master/doc/classes/EditorUndoRedoManager.xml.
+
+.. _class_EditorUndoRedoManager:
+
+EditorUndoRedoManager
+=====================
+
+**Inherits:** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
+
+Manages undo history of scenes opened in the editor.
+
+Description
+-----------
+
+``EditorUndoRedoManager`` is a manager for :ref:`UndoRedo<class_UndoRedo>` objects associated with edited scenes. Each scene has its own undo history and ``EditorUndoRedoManager`` ensures that each action performed in the editor gets associated with a proper scene. For actions not related to scenes (:ref:`ProjectSettings<class_ProjectSettings>` edits, external resources, etc.), a separate global history is used.
+
+The usage is mostly the same as :ref:`UndoRedo<class_UndoRedo>`. You create and commit actions and the manager automatically decides under-the-hood what scenes it belongs to. The scene is deduced based on the first operation in an action, using the object from the operation. The rules are as follows:
+
+- If the object is a :ref:`Node<class_Node>`, use the currently edited scene;
+
+- If the object is a built-in resource, use the scene from its path;
+
+- If the object is external resource or anything else, use global history.
+
+This guessing can sometimes yield false results, so you can provide a custom context object when creating an action.
+
+Methods
+-------
+
++---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                            | :ref:`add_do_method<class_EditorUndoRedoManager_method_add_do_method>` **(** :ref:`Object<class_Object>` object, :ref:`StringName<class_StringName>` method, ... **)** |vararg|                                              |
++---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                            | :ref:`add_do_property<class_EditorUndoRedoManager_method_add_do_property>` **(** :ref:`Object<class_Object>` object, :ref:`StringName<class_StringName>` property, :ref:`Variant<class_Variant>` value **)**                 |
++---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                            | :ref:`add_do_reference<class_EditorUndoRedoManager_method_add_do_reference>` **(** :ref:`Object<class_Object>` object **)**                                                                                                  |
++---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                            | :ref:`add_undo_method<class_EditorUndoRedoManager_method_add_undo_method>` **(** :ref:`Object<class_Object>` object, :ref:`StringName<class_StringName>` method, ... **)** |vararg|                                          |
++---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                            | :ref:`add_undo_property<class_EditorUndoRedoManager_method_add_undo_property>` **(** :ref:`Object<class_Object>` object, :ref:`StringName<class_StringName>` property, :ref:`Variant<class_Variant>` value **)**             |
++---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                            | :ref:`add_undo_reference<class_EditorUndoRedoManager_method_add_undo_reference>` **(** :ref:`Object<class_Object>` object **)**                                                                                              |
++---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                            | :ref:`commit_action<class_EditorUndoRedoManager_method_commit_action>` **(** :ref:`bool<class_bool>` execute=true **)**                                                                                                      |
++---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                            | :ref:`create_action<class_EditorUndoRedoManager_method_create_action>` **(** :ref:`String<class_String>` name, :ref:`MergeMode<enum_UndoRedo_MergeMode>` merge_mode=0, :ref:`Object<class_Object>` custom_context=null **)** |
++---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`UndoRedo<class_UndoRedo>` | :ref:`get_history_undo_redo<class_EditorUndoRedoManager_method_get_history_undo_redo>` **(** :ref:`int<class_int>` id **)** |const|                                                                                          |
++---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`           | :ref:`get_object_history_id<class_EditorUndoRedoManager_method_get_object_history_id>` **(** :ref:`Object<class_Object>` object **)** |const|                                                                                |
++---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`         | :ref:`is_committing_action<class_EditorUndoRedoManager_method_is_committing_action>` **(** **)** |const|                                                                                                                     |
++---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+Enumerations
+------------
+
+.. _enum_EditorUndoRedoManager_SpecialHistory:
+
+.. _class_EditorUndoRedoManager_constant_GLOBAL_HISTORY:
+
+.. _class_EditorUndoRedoManager_constant_INVALID_HISTORY:
+
+enum **SpecialHistory**:
+
+- **GLOBAL_HISTORY** = **0** --- Global history not associated with any scene, but with external resources etc.
+
+- **INVALID_HISTORY** = **-99** --- Invalid "null" history. It's a special value, not associated with any object.
+
+Method Descriptions
+-------------------
+
+.. _class_EditorUndoRedoManager_method_add_do_method:
+
+- void **add_do_method** **(** :ref:`Object<class_Object>` object, :ref:`StringName<class_StringName>` method, ... **)** |vararg|
+
+Register a method that will be called when the action is committed (i.e. the "do" action).
+
+If this is the first operation, the ``object`` will be used to deduce target undo history.
+
+----
+
+.. _class_EditorUndoRedoManager_method_add_do_property:
+
+- void **add_do_property** **(** :ref:`Object<class_Object>` object, :ref:`StringName<class_StringName>` property, :ref:`Variant<class_Variant>` value **)**
+
+Register a property value change for "do".
+
+If this is the first operation, the ``object`` will be used to deduce target undo history.
+
+----
+
+.. _class_EditorUndoRedoManager_method_add_do_reference:
+
+- void **add_do_reference** **(** :ref:`Object<class_Object>` object **)**
+
+Register a reference for "do" that will be erased if the "do" history is lost. This is useful mostly for new nodes created for the "do" call. Do not use for resources.
+
+----
+
+.. _class_EditorUndoRedoManager_method_add_undo_method:
+
+- void **add_undo_method** **(** :ref:`Object<class_Object>` object, :ref:`StringName<class_StringName>` method, ... **)** |vararg|
+
+Register a method that will be called when the action is undone (i.e. the "undo" action).
+
+If this is the first operation, the ``object`` will be used to deduce target undo history.
+
+----
+
+.. _class_EditorUndoRedoManager_method_add_undo_property:
+
+- void **add_undo_property** **(** :ref:`Object<class_Object>` object, :ref:`StringName<class_StringName>` property, :ref:`Variant<class_Variant>` value **)**
+
+Register a property value change for "undo".
+
+If this is the first operation, the ``object`` will be used to deduce target undo history.
+
+----
+
+.. _class_EditorUndoRedoManager_method_add_undo_reference:
+
+- void **add_undo_reference** **(** :ref:`Object<class_Object>` object **)**
+
+Register a reference for "undo" that will be erased if the "undo" history is lost. This is useful mostly for nodes removed with the "do" call (not the "undo" call!).
+
+----
+
+.. _class_EditorUndoRedoManager_method_commit_action:
+
+- void **commit_action** **(** :ref:`bool<class_bool>` execute=true **)**
+
+Commit the action. If ``execute`` is true (default), all "do" methods/properties are called/set when this function is called.
+
+----
+
+.. _class_EditorUndoRedoManager_method_create_action:
+
+- void **create_action** **(** :ref:`String<class_String>` name, :ref:`MergeMode<enum_UndoRedo_MergeMode>` merge_mode=0, :ref:`Object<class_Object>` custom_context=null **)**
+
+Create a new action. After this is called, do all your calls to :ref:`add_do_method<class_EditorUndoRedoManager_method_add_do_method>`, :ref:`add_undo_method<class_EditorUndoRedoManager_method_add_undo_method>`, :ref:`add_do_property<class_EditorUndoRedoManager_method_add_do_property>`, and :ref:`add_undo_property<class_EditorUndoRedoManager_method_add_undo_property>`, then commit the action with :ref:`commit_action<class_EditorUndoRedoManager_method_commit_action>`.
+
+The way actions are merged is dictated by the ``merge_mode`` argument. See :ref:`MergeMode<enum_UndoRedo_MergeMode>` for details.
+
+If ``custom_context`` object is provided, it will be used for deducing target history (instead of using the first operation).
+
+----
+
+.. _class_EditorUndoRedoManager_method_get_history_undo_redo:
+
+- :ref:`UndoRedo<class_UndoRedo>` **get_history_undo_redo** **(** :ref:`int<class_int>` id **)** |const|
+
+Returns the :ref:`UndoRedo<class_UndoRedo>` object associated with the given history ``id``.
+
+``id`` above ``0`` are mapped to the opened scene tabs (but it doesn't match their order). ``id`` of ``0`` or lower have special meaning (see :ref:`SpecialHistory<enum_EditorUndoRedoManager_SpecialHistory>`).
+
+Best used with :ref:`get_object_history_id<class_EditorUndoRedoManager_method_get_object_history_id>`. This method is only provided in case you need some more advanced methods of :ref:`UndoRedo<class_UndoRedo>` (but keep in mind that directly operating on the :ref:`UndoRedo<class_UndoRedo>` object might affect editor's stability).
+
+----
+
+.. _class_EditorUndoRedoManager_method_get_object_history_id:
+
+- :ref:`int<class_int>` **get_object_history_id** **(** :ref:`Object<class_Object>` object **)** |const|
+
+Returns the history ID deduced from the given ``object``. It can be used with :ref:`get_history_undo_redo<class_EditorUndoRedoManager_method_get_history_undo_redo>`.
+
+----
+
+.. _class_EditorUndoRedoManager_method_is_committing_action:
+
+- :ref:`bool<class_bool>` **is_committing_action** **(** **)** |const|
+
+Returns ``true`` if the ``EditorUndoRedoManager`` is currently committing the action, i.e. running its "do" method or property change (see :ref:`commit_action<class_EditorUndoRedoManager_method_commit_action>`).
+
+.. |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.)`

+ 294 - 71
classes/class_editorvcsinterface.rst

@@ -12,154 +12,377 @@ EditorVCSInterface
 
 **Inherits:** :ref:`Object<class_Object>`
 
-Version Control System (VCS) interface which reads and writes to the local VCS in use.
+Version Control System (VCS) interface, which reads and writes to the local VCS in use.
 
 Description
 -----------
 
-Used by the editor to display VCS extracted information in the editor. The implementation of this API is included in VCS addons, which are essentially GDExtension plugins that need to be put into the project folder. These VCS addons are scripts which are attached (on demand) to the object instance of ``EditorVCSInterface``. All the functions listed below, instead of performing the task themselves, they call the internally defined functions in the VCS addons to provide a plug-n-play experience.
+Defines the API that the editor uses to extract information from the underlying VCS. The implementation of this API is included in VCS plugins, which are GDExtension plugins that inherit ``EditorVCSInterface`` and are attached (on demand) to the singleton instance of ``EditorVCSInterface``. Instead of performing the task themselves, all the virtual functions listed below are calling the internally overridden functions in the VCS plugins to provide a plug-n-play experience. A custom VCS plugin is supposed to inherit from ``EditorVCSInterface`` and override each of these virtual functions.
 
 Methods
 -------
 
-+-------------------------------------+-------------------------------------------------------------------------------------------------------------------------+
-| void                                | :ref:`commit<class_EditorVCSInterface_method_commit>` **(** :ref:`String<class_String>` msg **)**                       |
-+-------------------------------------+-------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`           | :ref:`get_file_diff<class_EditorVCSInterface_method_get_file_diff>` **(** :ref:`String<class_String>` file_path **)**   |
-+-------------------------------------+-------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Dictionary<class_Dictionary>` | :ref:`get_modified_files_data<class_EditorVCSInterface_method_get_modified_files_data>` **(** **)**                     |
-+-------------------------------------+-------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`         | :ref:`get_project_name<class_EditorVCSInterface_method_get_project_name>` **(** **)**                                   |
-+-------------------------------------+-------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`         | :ref:`get_vcs_name<class_EditorVCSInterface_method_get_vcs_name>` **(** **)**                                           |
-+-------------------------------------+-------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`             | :ref:`initialize<class_EditorVCSInterface_method_initialize>` **(** :ref:`String<class_String>` project_root_path **)** |
-+-------------------------------------+-------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`             | :ref:`is_addon_ready<class_EditorVCSInterface_method_is_addon_ready>` **(** **)**                                       |
-+-------------------------------------+-------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`             | :ref:`is_vcs_initialized<class_EditorVCSInterface_method_is_vcs_initialized>` **(** **)**                               |
-+-------------------------------------+-------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`             | :ref:`shut_down<class_EditorVCSInterface_method_shut_down>` **(** **)**                                                 |
-+-------------------------------------+-------------------------------------------------------------------------------------------------------------------------+
-| void                                | :ref:`stage_file<class_EditorVCSInterface_method_stage_file>` **(** :ref:`String<class_String>` file_path **)**         |
-+-------------------------------------+-------------------------------------------------------------------------------------------------------------------------+
-| void                                | :ref:`unstage_file<class_EditorVCSInterface_method_unstage_file>` **(** :ref:`String<class_String>` file_path **)**     |
-+-------------------------------------+-------------------------------------------------------------------------------------------------------------------------+
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`               | :ref:`_checkout_branch<class_EditorVCSInterface_method__checkout_branch>` **(** :ref:`String<class_String>` branch_name **)** |virtual|                                                                                                                                                                                   |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`_commit<class_EditorVCSInterface_method__commit>` **(** :ref:`String<class_String>` msg **)** |virtual|                                                                                                                                                                                                             |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`_create_branch<class_EditorVCSInterface_method__create_branch>` **(** :ref:`String<class_String>` branch_name **)** |virtual|                                                                                                                                                                                       |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`_create_remote<class_EditorVCSInterface_method__create_remote>` **(** :ref:`String<class_String>` remote_name, :ref:`String<class_String>` remote_url **)** |virtual|                                                                                                                                               |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`_discard_file<class_EditorVCSInterface_method__discard_file>` **(** :ref:`String<class_String>` file_path **)** |virtual|                                                                                                                                                                                           |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`_fetch<class_EditorVCSInterface_method__fetch>` **(** :ref:`String<class_String>` remote **)** |virtual|                                                                                                                                                                                                            |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`             | :ref:`_get_branch_list<class_EditorVCSInterface_method__get_branch_list>` **(** **)** |virtual|                                                                                                                                                                                                                           |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`           | :ref:`_get_current_branch_name<class_EditorVCSInterface_method__get_current_branch_name>` **(** **)** |virtual|                                                                                                                                                                                                           |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary[]<class_Dictionary>` | :ref:`_get_diff<class_EditorVCSInterface_method__get_diff>` **(** :ref:`String<class_String>` identifier, :ref:`int<class_int>` area **)** |virtual|                                                                                                                                                                      |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`             | :ref:`_get_line_diff<class_EditorVCSInterface_method__get_line_diff>` **(** :ref:`String<class_String>` file_path, :ref:`String<class_String>` text **)** |virtual|                                                                                                                                                       |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`             | :ref:`_get_modified_files_data<class_EditorVCSInterface_method__get_modified_files_data>` **(** **)** |virtual|                                                                                                                                                                                                           |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`             | :ref:`_get_previous_commits<class_EditorVCSInterface_method__get_previous_commits>` **(** :ref:`int<class_int>` max_commits **)** |virtual|                                                                                                                                                                               |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`             | :ref:`_get_remotes<class_EditorVCSInterface_method__get_remotes>` **(** **)** |virtual|                                                                                                                                                                                                                                   |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`           | :ref:`_get_vcs_name<class_EditorVCSInterface_method__get_vcs_name>` **(** **)** |virtual|                                                                                                                                                                                                                                 |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`               | :ref:`_initialize<class_EditorVCSInterface_method__initialize>` **(** :ref:`String<class_String>` project_path **)** |virtual|                                                                                                                                                                                            |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`_pull<class_EditorVCSInterface_method__pull>` **(** :ref:`String<class_String>` remote **)** |virtual|                                                                                                                                                                                                              |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`_push<class_EditorVCSInterface_method__push>` **(** :ref:`String<class_String>` remote, :ref:`bool<class_bool>` force **)** |virtual|                                                                                                                                                                               |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`_remove_branch<class_EditorVCSInterface_method__remove_branch>` **(** :ref:`String<class_String>` branch_name **)** |virtual|                                                                                                                                                                                       |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`_remove_remote<class_EditorVCSInterface_method__remove_remote>` **(** :ref:`String<class_String>` remote_name **)** |virtual|                                                                                                                                                                                       |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`_set_credentials<class_EditorVCSInterface_method__set_credentials>` **(** :ref:`String<class_String>` username, :ref:`String<class_String>` password, :ref:`String<class_String>` ssh_public_key_path, :ref:`String<class_String>` ssh_private_key_path, :ref:`String<class_String>` ssh_passphrase **)** |virtual| |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`               | :ref:`_shut_down<class_EditorVCSInterface_method__shut_down>` **(** **)** |virtual|                                                                                                                                                                                                                                       |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`_stage_file<class_EditorVCSInterface_method__stage_file>` **(** :ref:`String<class_String>` file_path **)** |virtual|                                                                                                                                                                                               |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`_unstage_file<class_EditorVCSInterface_method__unstage_file>` **(** :ref:`String<class_String>` file_path **)** |virtual|                                                                                                                                                                                           |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>`   | :ref:`add_diff_hunks_into_diff_file<class_EditorVCSInterface_method_add_diff_hunks_into_diff_file>` **(** :ref:`Dictionary<class_Dictionary>` diff_file, :ref:`Array<class_Array>` diff_hunks **)**                                                                                                                       |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>`   | :ref:`add_line_diffs_into_diff_hunk<class_EditorVCSInterface_method_add_line_diffs_into_diff_hunk>` **(** :ref:`Dictionary<class_Dictionary>` diff_hunk, :ref:`Array<class_Array>` line_diffs **)**                                                                                                                       |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>`   | :ref:`create_commit<class_EditorVCSInterface_method_create_commit>` **(** :ref:`String<class_String>` msg, :ref:`String<class_String>` author, :ref:`String<class_String>` id, :ref:`int<class_int>` unix_timestamp, :ref:`int<class_int>` offset_minutes **)**                                                           |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>`   | :ref:`create_diff_file<class_EditorVCSInterface_method_create_diff_file>` **(** :ref:`String<class_String>` new_file, :ref:`String<class_String>` old_file **)**                                                                                                                                                          |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>`   | :ref:`create_diff_hunk<class_EditorVCSInterface_method_create_diff_hunk>` **(** :ref:`int<class_int>` old_start, :ref:`int<class_int>` new_start, :ref:`int<class_int>` old_lines, :ref:`int<class_int>` new_lines **)**                                                                                                  |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>`   | :ref:`create_diff_line<class_EditorVCSInterface_method_create_diff_line>` **(** :ref:`int<class_int>` new_line_no, :ref:`int<class_int>` old_line_no, :ref:`String<class_String>` content, :ref:`String<class_String>` status **)**                                                                                       |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>`   | :ref:`create_status_file<class_EditorVCSInterface_method_create_status_file>` **(** :ref:`String<class_String>` file_path, :ref:`ChangeType<enum_EditorVCSInterface_ChangeType>` change_type, :ref:`TreeArea<enum_EditorVCSInterface_TreeArea>` area **)**                                                                |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`popup_error<class_EditorVCSInterface_method_popup_error>` **(** :ref:`String<class_String>` msg **)**                                                                                                                                                                                                               |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+Enumerations
+------------
+
+.. _enum_EditorVCSInterface_ChangeType:
+
+.. _class_EditorVCSInterface_constant_CHANGE_TYPE_NEW:
+
+.. _class_EditorVCSInterface_constant_CHANGE_TYPE_MODIFIED:
+
+.. _class_EditorVCSInterface_constant_CHANGE_TYPE_RENAMED:
+
+.. _class_EditorVCSInterface_constant_CHANGE_TYPE_DELETED:
+
+.. _class_EditorVCSInterface_constant_CHANGE_TYPE_TYPECHANGE:
+
+.. _class_EditorVCSInterface_constant_CHANGE_TYPE_UNMERGED:
+
+enum **ChangeType**:
+
+- **CHANGE_TYPE_NEW** = **0** --- A new file has been added.
+
+- **CHANGE_TYPE_MODIFIED** = **1** --- An earlier added file has been modified.
+
+- **CHANGE_TYPE_RENAMED** = **2** --- An earlier added file has been renamed.
+
+- **CHANGE_TYPE_DELETED** = **3** --- An earlier added file has been deleted.
+
+- **CHANGE_TYPE_TYPECHANGE** = **4** --- An earlier added file has been typechanged.
+
+- **CHANGE_TYPE_UNMERGED** = **5** --- A file is left unmerged.
+
+----
+
+.. _enum_EditorVCSInterface_TreeArea:
+
+.. _class_EditorVCSInterface_constant_TREE_AREA_COMMIT:
+
+.. _class_EditorVCSInterface_constant_TREE_AREA_STAGED:
+
+.. _class_EditorVCSInterface_constant_TREE_AREA_UNSTAGED:
+
+enum **TreeArea**:
+
+- **TREE_AREA_COMMIT** = **0** --- A commit is encountered from the commit area.
+
+- **TREE_AREA_STAGED** = **1** --- A file is encountered from the staged area.
+
+- **TREE_AREA_UNSTAGED** = **2** --- A file is encountered from the unstaged area.
 
 Method Descriptions
 -------------------
 
-.. _class_EditorVCSInterface_method_commit:
+.. _class_EditorVCSInterface_method__checkout_branch:
 
-- void **commit** **(** :ref:`String<class_String>` msg **)**
+- :ref:`bool<class_bool>` **_checkout_branch** **(** :ref:`String<class_String>` branch_name **)** |virtual|
 
-Creates a version commit if the addon is initialized, else returns without doing anything. Uses the files which have been staged previously, with the commit message set to a value as provided as in the argument.
+Checks out a ``branch_name`` in the VCS.
 
 ----
 
-.. _class_EditorVCSInterface_method_get_file_diff:
+.. _class_EditorVCSInterface_method__commit:
 
-- :ref:`Array<class_Array>` **get_file_diff** **(** :ref:`String<class_String>` file_path **)**
+- void **_commit** **(** :ref:`String<class_String>` msg **)** |virtual|
 
-Returns an :ref:`Array<class_Array>` of :ref:`Dictionary<class_Dictionary>` objects containing the diff output from the VCS in use, if a VCS addon is initialized, else returns an empty :ref:`Array<class_Array>` object. The diff contents also consist of some contextual lines which provide context to the observed line change in the file.
+Commits the currently staged changes and applies the commit ``msg`` to the resulting commit.
 
-Each :ref:`Dictionary<class_Dictionary>` object has the line diff contents under the keys:
+----
+
+.. _class_EditorVCSInterface_method__create_branch:
 
-- ``"content"`` to store a :ref:`String<class_String>` containing the line contents
+- void **_create_branch** **(** :ref:`String<class_String>` branch_name **)** |virtual|
 
-- ``"status"`` to store a :ref:`String<class_String>` which contains ``"+"`` in case the content is a line addition but it stores a ``"-"`` in case of deletion and an empty string in the case the line content is neither an addition nor a deletion.
+Creates a new branch named ``branch_name`` in the VCS.
 
-- ``"new_line_number"`` to store an integer containing the new line number of the line content.
+----
 
-- ``"line_count"`` to store an integer containing the number of lines in the line content.
+.. _class_EditorVCSInterface_method__create_remote:
 
-- ``"old_line_number"`` to store an integer containing the old line number of the line content.
+- void **_create_remote** **(** :ref:`String<class_String>` remote_name, :ref:`String<class_String>` remote_url **)** |virtual|
 
-- ``"offset"`` to store the offset of the line change since the first contextual line content.
+Creates a new remote destination with name ``remote_name`` and points it to ``remote_url``. This can be an HTTPS remote or an SSH remote.
 
 ----
 
-.. _class_EditorVCSInterface_method_get_modified_files_data:
+.. _class_EditorVCSInterface_method__discard_file:
 
-- :ref:`Dictionary<class_Dictionary>` **get_modified_files_data** **(** **)**
+- void **_discard_file** **(** :ref:`String<class_String>` file_path **)** |virtual|
 
-Returns a :ref:`Dictionary<class_Dictionary>` containing the path of the detected file change mapped to an integer signifying what kind of change the corresponding file has experienced.
+Discards the changes made in a file present at ``file_path``.
+
+----
+
+.. _class_EditorVCSInterface_method__fetch:
+
+- void **_fetch** **(** :ref:`String<class_String>` remote **)** |virtual|
+
+Fetches new changes from the remote, but doesn't write changes to the current working directory. Equivalent to ``git fetch``.
+
+----
+
+.. _class_EditorVCSInterface_method__get_branch_list:
+
+- :ref:`Array<class_Array>` **_get_branch_list** **(** **)** |virtual|
+
+Gets an instance of an :ref:`Array<class_Array>` of :ref:`String<class_String>`\ s containing available branch names in the VCS.
+
+----
 
-The following integer values are being used to signify that the detected file is:
+.. _class_EditorVCSInterface_method__get_current_branch_name:
+
+- :ref:`String<class_String>` **_get_current_branch_name** **(** **)** |virtual|
+
+Gets the current branch name defined in the VCS.
+
+----
+
+.. _class_EditorVCSInterface_method__get_diff:
+
+- :ref:`Dictionary[]<class_Dictionary>` **_get_diff** **(** :ref:`String<class_String>` identifier, :ref:`int<class_int>` area **)** |virtual|
+
+Returns an array of :ref:`Dictionary<class_Dictionary>` items (see :ref:`create_diff_file<class_EditorVCSInterface_method_create_diff_file>`, :ref:`create_diff_hunk<class_EditorVCSInterface_method_create_diff_hunk>`, :ref:`create_diff_line<class_EditorVCSInterface_method_create_diff_line>`, :ref:`add_line_diffs_into_diff_hunk<class_EditorVCSInterface_method_add_line_diffs_into_diff_hunk>` and :ref:`add_diff_hunks_into_diff_file<class_EditorVCSInterface_method_add_diff_hunks_into_diff_file>`), each containing information about a diff. If ``identifier`` is a file path, returns a file diff, and if it is a commit identifier, then returns a commit diff.
+
+----
+
+.. _class_EditorVCSInterface_method__get_line_diff:
+
+- :ref:`Array<class_Array>` **_get_line_diff** **(** :ref:`String<class_String>` file_path, :ref:`String<class_String>` text **)** |virtual|
+
+Returns an :ref:`Array<class_Array>` of :ref:`Dictionary<class_Dictionary>` items (see :ref:`create_diff_hunk<class_EditorVCSInterface_method_create_diff_hunk>`), each containing a line diff between a file at ``file_path`` and the ``text`` which is passed in.
+
+----
+
+.. _class_EditorVCSInterface_method__get_modified_files_data:
+
+- :ref:`Array<class_Array>` **_get_modified_files_data** **(** **)** |virtual|
+
+Returns an :ref:`Array<class_Array>` of :ref:`Dictionary<class_Dictionary>` items (see :ref:`create_status_file<class_EditorVCSInterface_method_create_status_file>`), each containing the status data of every modified file in the project folder.
+
+----
+
+.. _class_EditorVCSInterface_method__get_previous_commits:
+
+- :ref:`Array<class_Array>` **_get_previous_commits** **(** :ref:`int<class_int>` max_commits **)** |virtual|
+
+Returns an :ref:`Array<class_Array>` of :ref:`Dictionary<class_Dictionary>` items (see :ref:`create_commit<class_EditorVCSInterface_method_create_commit>`), each containing the data for a past commit.
+
+----
 
-- ``0``: New to the VCS working directory
+.. _class_EditorVCSInterface_method__get_remotes:
 
-- ``1``: Modified
+- :ref:`Array<class_Array>` **_get_remotes** **(** **)** |virtual|
+
+Returns an :ref:`Array<class_Array>` of :ref:`String<class_String>`\ s, each containing the name of a remote configured in the VCS.
+
+----
+
+.. _class_EditorVCSInterface_method__get_vcs_name:
+
+- :ref:`String<class_String>` **_get_vcs_name** **(** **)** |virtual|
+
+Returns the name of the underlying VCS provider.
+
+----
+
+.. _class_EditorVCSInterface_method__initialize:
+
+- :ref:`bool<class_bool>` **_initialize** **(** :ref:`String<class_String>` project_path **)** |virtual|
+
+Initializes the VCS plugin when called from the editor. Returns whether or not the plugin was successfully initialized. A VCS project is initialized at ``project_path``.
+
+----
+
+.. _class_EditorVCSInterface_method__pull:
+
+- void **_pull** **(** :ref:`String<class_String>` remote **)** |virtual|
+
+Pulls changes from the remote. This can give rise to merge conflicts.
+
+----
+
+.. _class_EditorVCSInterface_method__push:
+
+- void **_push** **(** :ref:`String<class_String>` remote, :ref:`bool<class_bool>` force **)** |virtual|
+
+Pushes changes to the ``remote``. Optionally, if ``force`` is set to true, a force push will override the change history already present on the remote.
+
+----
+
+.. _class_EditorVCSInterface_method__remove_branch:
+
+- void **_remove_branch** **(** :ref:`String<class_String>` branch_name **)** |virtual|
+
+Remove a branch from the local VCS.
+
+----
+
+.. _class_EditorVCSInterface_method__remove_remote:
+
+- void **_remove_remote** **(** :ref:`String<class_String>` remote_name **)** |virtual|
+
+Remove a remote from the local VCS.
+
+----
+
+.. _class_EditorVCSInterface_method__set_credentials:
+
+- void **_set_credentials** **(** :ref:`String<class_String>` username, :ref:`String<class_String>` password, :ref:`String<class_String>` ssh_public_key_path, :ref:`String<class_String>` ssh_private_key_path, :ref:`String<class_String>` ssh_passphrase **)** |virtual|
+
+Set user credentials in the underlying VCS. ``username`` and ``password`` are used only during HTTPS authentication unless not already mentioned in the remote URL. ``ssh_public_key_path``, ``ssh_private_key_path``, and ``ssh_passphrase`` are only used during SSH authentication.
+
+----
+
+.. _class_EditorVCSInterface_method__shut_down:
+
+- :ref:`bool<class_bool>` **_shut_down** **(** **)** |virtual|
+
+Shuts down VCS plugin instance. Called when the user either closes the editor or shuts down the VCS plugin through the editor UI.
+
+----
+
+.. _class_EditorVCSInterface_method__stage_file:
+
+- void **_stage_file** **(** :ref:`String<class_String>` file_path **)** |virtual|
+
+Stages the file present at ``file_path`` to the staged area.
+
+----
 
-- ``2``: Renamed
+.. _class_EditorVCSInterface_method__unstage_file:
 
-- ``3``: Deleted
+- void **_unstage_file** **(** :ref:`String<class_String>` file_path **)** |virtual|
 
-- ``4``: Typechanged
+Unstages the file present at ``file_path`` from the staged area to the unstaged area.
 
 ----
 
-.. _class_EditorVCSInterface_method_get_project_name:
+.. _class_EditorVCSInterface_method_add_diff_hunks_into_diff_file:
 
-- :ref:`String<class_String>` **get_project_name** **(** **)**
+- :ref:`Dictionary<class_Dictionary>` **add_diff_hunks_into_diff_file** **(** :ref:`Dictionary<class_Dictionary>` diff_file, :ref:`Array<class_Array>` diff_hunks **)**
 
-Returns the project name of the VCS working directory.
+Helper function to add an array of ``diff_hunks`` into a ``diff_file``.
 
 ----
 
-.. _class_EditorVCSInterface_method_get_vcs_name:
+.. _class_EditorVCSInterface_method_add_line_diffs_into_diff_hunk:
 
-- :ref:`String<class_String>` **get_vcs_name** **(** **)**
+- :ref:`Dictionary<class_Dictionary>` **add_line_diffs_into_diff_hunk** **(** :ref:`Dictionary<class_Dictionary>` diff_hunk, :ref:`Array<class_Array>` line_diffs **)**
 
-Returns the name of the VCS if the VCS has been initialized, else return an empty string.
+Helper function to add an array of ``line_diffs`` into a ``diff_hunk``.
 
 ----
 
-.. _class_EditorVCSInterface_method_initialize:
+.. _class_EditorVCSInterface_method_create_commit:
 
-- :ref:`bool<class_bool>` **initialize** **(** :ref:`String<class_String>` project_root_path **)**
+- :ref:`Dictionary<class_Dictionary>` **create_commit** **(** :ref:`String<class_String>` msg, :ref:`String<class_String>` author, :ref:`String<class_String>` id, :ref:`int<class_int>` unix_timestamp, :ref:`int<class_int>` offset_minutes **)**
 
-Initializes the VCS addon if not already. Uses the argument value as the path to the working directory of the project. Creates the initial commit if required. Returns ``true`` if no failure occurs, else returns ``false``.
+Helper function to create a commit :ref:`Dictionary<class_Dictionary>` item. ``msg`` is the commit message of the commit. ``author`` is a single human-readable string containing all the author's details, e.g. the email and name configured in the VCS. ``id`` is the identifier of the commit, in whichever format your VCS may provide an identifier to commits. ``unix_timestamp`` is the UTC Unix timestamp of when the commit was created. ``offset_minutes`` is the timezone offset in minutes, recorded from the system timezone where the commit was created.
 
 ----
 
-.. _class_EditorVCSInterface_method_is_addon_ready:
+.. _class_EditorVCSInterface_method_create_diff_file:
 
-- :ref:`bool<class_bool>` **is_addon_ready** **(** **)**
+- :ref:`Dictionary<class_Dictionary>` **create_diff_file** **(** :ref:`String<class_String>` new_file, :ref:`String<class_String>` old_file **)**
 
-Returns ``true`` if the addon is ready to respond to function calls, else returns ``false``.
+Helper function to create a ``Dictionary`` for storing old and new diff file paths.
 
 ----
 
-.. _class_EditorVCSInterface_method_is_vcs_initialized:
+.. _class_EditorVCSInterface_method_create_diff_hunk:
 
-- :ref:`bool<class_bool>` **is_vcs_initialized** **(** **)**
+- :ref:`Dictionary<class_Dictionary>` **create_diff_hunk** **(** :ref:`int<class_int>` old_start, :ref:`int<class_int>` new_start, :ref:`int<class_int>` old_lines, :ref:`int<class_int>` new_lines **)**
 
-Returns ``true`` if the VCS addon has been initialized, else returns ``false``.
+Helper function to create a ``Dictionary`` for storing diff hunk data. ``old_start`` is the starting line number in old file. ``new_start`` is the starting line number in new file. ``old_lines`` is the number of lines in the old file. ``new_lines`` is the number of lines in the new file.
 
 ----
 
-.. _class_EditorVCSInterface_method_shut_down:
+.. _class_EditorVCSInterface_method_create_diff_line:
 
-- :ref:`bool<class_bool>` **shut_down** **(** **)**
+- :ref:`Dictionary<class_Dictionary>` **create_diff_line** **(** :ref:`int<class_int>` new_line_no, :ref:`int<class_int>` old_line_no, :ref:`String<class_String>` content, :ref:`String<class_String>` status **)**
 
-Shuts down the VCS addon to allow cleanup code to run on call. Returns ``true`` is no failure occurs, else returns ``false``.
+Helper function to create a ``Dictionary`` for storing a line diff. ``new_line_no`` is the line number in the new file (can be ``-1`` if the line is deleted). ``old_line_no`` is the line number in the old file (can be ``-1`` if the line is added). ``content`` is the diff text. ``status`` is a single character string which stores the line origin.
 
 ----
 
-.. _class_EditorVCSInterface_method_stage_file:
+.. _class_EditorVCSInterface_method_create_status_file:
 
-- void **stage_file** **(** :ref:`String<class_String>` file_path **)**
+- :ref:`Dictionary<class_Dictionary>` **create_status_file** **(** :ref:`String<class_String>` file_path, :ref:`ChangeType<enum_EditorVCSInterface_ChangeType>` change_type, :ref:`TreeArea<enum_EditorVCSInterface_TreeArea>` area **)**
 
-Stages the file which should be committed when :ref:`commit<class_EditorVCSInterface_method_commit>` is called. Argument should contain the absolute path.
+Helper function to create a ``Dictionary`` used by editor to read the status of a file.
 
 ----
 
-.. _class_EditorVCSInterface_method_unstage_file:
+.. _class_EditorVCSInterface_method_popup_error:
 
-- void **unstage_file** **(** :ref:`String<class_String>` file_path **)**
+- void **popup_error** **(** :ref:`String<class_String>` msg **)**
 
-Unstages the file which was staged previously to be committed, so that it is no longer committed when :ref:`commit<class_EditorVCSInterface_method_commit>` is called. Argument should contain the absolute path.
+Pops up an error message in the edior which is shown as coming from the underlying VCS. Use this to show VCS specific error messages.
 
 .. |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.)`

+ 36 - 36
classes/class_enetconnection.rst

@@ -27,41 +27,41 @@ Tutorials
 Methods
 -------
 
-+---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                        | :ref:`bandwidth_limit<class_ENetConnection_method_bandwidth_limit>` **(** :ref:`int<class_int>` in_bandwidth=0, :ref:`int<class_int>` out_bandwidth=0 **)**                                                                                                                                                          |
-+---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                        | :ref:`broadcast<class_ENetConnection_method_broadcast>` **(** :ref:`int<class_int>` channel, :ref:`PackedByteArray<class_PackedByteArray>` packet, :ref:`int<class_int>` flags **)**                                                                                                                                 |
-+---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                        | :ref:`channel_limit<class_ENetConnection_method_channel_limit>` **(** :ref:`int<class_int>` limit **)**                                                                                                                                                                                                              |
-+---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                        | :ref:`compress<class_ENetConnection_method_compress>` **(** :ref:`CompressionMode<enum_ENetConnection_CompressionMode>` mode **)**                                                                                                                                                                                   |
-+---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`ENetPacketPeer<class_ENetPacketPeer>` | :ref:`connect_to_host<class_ENetConnection_method_connect_to_host>` **(** :ref:`String<class_String>` address, :ref:`int<class_int>` port, :ref:`int<class_int>` channels=0, :ref:`int<class_int>` data=0 **)**                                                                                                      |
-+---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Error<enum_@GlobalScope_Error>`       | :ref:`create_host<class_ENetConnection_method_create_host>` **(** :ref:`int<class_int>` max_peers=32, :ref:`int<class_int>` max_channels=0, :ref:`int<class_int>` in_bandwidth=0, :ref:`int<class_int>` out_bandwidth=0 **)**                                                                                        |
-+---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Error<enum_@GlobalScope_Error>`       | :ref:`create_host_bound<class_ENetConnection_method_create_host_bound>` **(** :ref:`String<class_String>` bind_address, :ref:`int<class_int>` bind_port, :ref:`int<class_int>` max_peers=32, :ref:`int<class_int>` max_channels=0, :ref:`int<class_int>` in_bandwidth=0, :ref:`int<class_int>` out_bandwidth=0 **)** |
-+---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                        | :ref:`destroy<class_ENetConnection_method_destroy>` **(** **)**                                                                                                                                                                                                                                                      |
-+---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Error<enum_@GlobalScope_Error>`       | :ref:`dtls_client_setup<class_ENetConnection_method_dtls_client_setup>` **(** :ref:`X509Certificate<class_X509Certificate>` certificate, :ref:`String<class_String>` hostname, :ref:`bool<class_bool>` verify=true **)**                                                                                             |
-+---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Error<enum_@GlobalScope_Error>`       | :ref:`dtls_server_setup<class_ENetConnection_method_dtls_server_setup>` **(** :ref:`CryptoKey<class_CryptoKey>` key, :ref:`X509Certificate<class_X509Certificate>` certificate **)**                                                                                                                                 |
-+---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                        | :ref:`flush<class_ENetConnection_method_flush>` **(** **)**                                                                                                                                                                                                                                                          |
-+---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                       | :ref:`get_local_port<class_ENetConnection_method_get_local_port>` **(** **)** |const|                                                                                                                                                                                                                                |
-+---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                       | :ref:`get_max_channels<class_ENetConnection_method_get_max_channels>` **(** **)** |const|                                                                                                                                                                                                                            |
-+---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                   | :ref:`get_peers<class_ENetConnection_method_get_peers>` **(** **)**                                                                                                                                                                                                                                                  |
-+---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                   | :ref:`pop_statistic<class_ENetConnection_method_pop_statistic>` **(** :ref:`HostStatistic<enum_ENetConnection_HostStatistic>` statistic **)**                                                                                                                                                                        |
-+---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                        | :ref:`refuse_new_connections<class_ENetConnection_method_refuse_new_connections>` **(** :ref:`bool<class_bool>` refuse **)**                                                                                                                                                                                         |
-+---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                   | :ref:`service<class_ENetConnection_method_service>` **(** :ref:`int<class_int>` timeout=0 **)**                                                                                                                                                                                                                      |
-+---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`bandwidth_limit<class_ENetConnection_method_bandwidth_limit>` **(** :ref:`int<class_int>` in_bandwidth=0, :ref:`int<class_int>` out_bandwidth=0 **)**                                                                                                                                                          |
++-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`broadcast<class_ENetConnection_method_broadcast>` **(** :ref:`int<class_int>` channel, :ref:`PackedByteArray<class_PackedByteArray>` packet, :ref:`int<class_int>` flags **)**                                                                                                                                 |
++-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`channel_limit<class_ENetConnection_method_channel_limit>` **(** :ref:`int<class_int>` limit **)**                                                                                                                                                                                                              |
++-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`compress<class_ENetConnection_method_compress>` **(** :ref:`CompressionMode<enum_ENetConnection_CompressionMode>` mode **)**                                                                                                                                                                                   |
++-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`ENetPacketPeer<class_ENetPacketPeer>`   | :ref:`connect_to_host<class_ENetConnection_method_connect_to_host>` **(** :ref:`String<class_String>` address, :ref:`int<class_int>` port, :ref:`int<class_int>` channels=0, :ref:`int<class_int>` data=0 **)**                                                                                                      |
++-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Error<enum_@GlobalScope_Error>`         | :ref:`create_host<class_ENetConnection_method_create_host>` **(** :ref:`int<class_int>` max_peers=32, :ref:`int<class_int>` max_channels=0, :ref:`int<class_int>` in_bandwidth=0, :ref:`int<class_int>` out_bandwidth=0 **)**                                                                                        |
++-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Error<enum_@GlobalScope_Error>`         | :ref:`create_host_bound<class_ENetConnection_method_create_host_bound>` **(** :ref:`String<class_String>` bind_address, :ref:`int<class_int>` bind_port, :ref:`int<class_int>` max_peers=32, :ref:`int<class_int>` max_channels=0, :ref:`int<class_int>` in_bandwidth=0, :ref:`int<class_int>` out_bandwidth=0 **)** |
++-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`destroy<class_ENetConnection_method_destroy>` **(** **)**                                                                                                                                                                                                                                                      |
++-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Error<enum_@GlobalScope_Error>`         | :ref:`dtls_client_setup<class_ENetConnection_method_dtls_client_setup>` **(** :ref:`X509Certificate<class_X509Certificate>` certificate, :ref:`String<class_String>` hostname, :ref:`bool<class_bool>` verify=true **)**                                                                                             |
++-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Error<enum_@GlobalScope_Error>`         | :ref:`dtls_server_setup<class_ENetConnection_method_dtls_server_setup>` **(** :ref:`CryptoKey<class_CryptoKey>` key, :ref:`X509Certificate<class_X509Certificate>` certificate **)**                                                                                                                                 |
++-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`flush<class_ENetConnection_method_flush>` **(** **)**                                                                                                                                                                                                                                                          |
++-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                         | :ref:`get_local_port<class_ENetConnection_method_get_local_port>` **(** **)** |const|                                                                                                                                                                                                                                |
++-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                         | :ref:`get_max_channels<class_ENetConnection_method_get_max_channels>` **(** **)** |const|                                                                                                                                                                                                                            |
++-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`ENetPacketPeer[]<class_ENetPacketPeer>` | :ref:`get_peers<class_ENetConnection_method_get_peers>` **(** **)**                                                                                                                                                                                                                                                  |
++-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                     | :ref:`pop_statistic<class_ENetConnection_method_pop_statistic>` **(** :ref:`HostStatistic<enum_ENetConnection_HostStatistic>` statistic **)**                                                                                                                                                                        |
++-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`refuse_new_connections<class_ENetConnection_method_refuse_new_connections>` **(** :ref:`bool<class_bool>` refuse **)**                                                                                                                                                                                         |
++-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                     | :ref:`service<class_ENetConnection_method_service>` **(** :ref:`int<class_int>` timeout=0 **)**                                                                                                                                                                                                                      |
++-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Enumerations
 ------------
@@ -253,7 +253,7 @@ Returns the maximum number of channels allowed for connected peers.
 
 .. _class_ENetConnection_method_get_peers:
 
-- :ref:`Array<class_Array>` **get_peers** **(** **)**
+- :ref:`ENetPacketPeer[]<class_ENetPacketPeer>` **get_peers** **(** **)**
 
 Returns the list of peers associated with this host.
 

+ 20 - 0
classes/class_enetpacketpeer.rst

@@ -34,6 +34,10 @@ Methods
 +-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                           | :ref:`get_channels<class_ENetPacketPeer_method_get_channels>` **(** **)** |const|                                                                                                            |
 +-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                     | :ref:`get_remote_address<class_ENetPacketPeer_method_get_remote_address>` **(** **)** |const|                                                                                                |
++-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                           | :ref:`get_remote_port<class_ENetPacketPeer_method_get_remote_port>` **(** **)** |const|                                                                                                      |
++-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`PeerState<enum_ENetPacketPeer_PeerState>` | :ref:`get_state<class_ENetPacketPeer_method_get_state>` **(** **)** |const|                                                                                                                  |
 +-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`float<class_float>`                       | :ref:`get_statistic<class_ENetPacketPeer_method_get_statistic>` **(** :ref:`PeerStatistic<enum_ENetPacketPeer_PeerStatistic>` statistic **)**                                                |
@@ -202,6 +206,22 @@ Returns the number of channels allocated for communication with peer.
 
 ----
 
+.. _class_ENetPacketPeer_method_get_remote_address:
+
+- :ref:`String<class_String>` **get_remote_address** **(** **)** |const|
+
+Returns the IP address of this peer.
+
+----
+
+.. _class_ENetPacketPeer_method_get_remote_port:
+
+- :ref:`int<class_int>` **get_remote_port** **(** **)** |const|
+
+Returns the remote port of this peer.
+
+----
+
 .. _class_ENetPacketPeer_method_get_state:
 
 - :ref:`PeerState<enum_ENetPacketPeer_PeerState>` **get_state** **(** **)** |const|

+ 33 - 2
classes/class_engine.rst

@@ -37,10 +37,12 @@ Properties
 Methods
 -------
 
++---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                       | :ref:`get_architecture_name<class_Engine_method_get_architecture_name>` **(** **)** |const|                                                                  |
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Dictionary<class_Dictionary>`               | :ref:`get_author_info<class_Engine_method_get_author_info>` **(** **)** |const|                                                                              |
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                         | :ref:`get_copyright_info<class_Engine_method_get_copyright_info>` **(** **)** |const|                                                                        |
+| :ref:`Dictionary[]<class_Dictionary>`             | :ref:`get_copyright_info<class_Engine_method_get_copyright_info>` **(** **)** |const|                                                                        |
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Dictionary<class_Dictionary>`               | :ref:`get_donor_info<class_Engine_method_get_donor_info>` **(** **)** |const|                                                                                |
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -70,6 +72,8 @@ Methods
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Dictionary<class_Dictionary>`               | :ref:`get_version_info<class_Engine_method_get_version_info>` **(** **)** |const|                                                                            |
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                       | :ref:`get_write_movie_path<class_Engine_method_get_write_movie_path>` **(** **)** |const|                                                                    |
++---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                           | :ref:`has_singleton<class_Engine_method_has_singleton>` **(** :ref:`StringName<class_StringName>` name **)** |const|                                         |
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                           | :ref:`is_editor_hint<class_Engine_method_is_editor_hint>` **(** **)** |const|                                                                                |
@@ -175,6 +179,25 @@ Controls how fast or slow the in-game clock ticks versus the real life one. It d
 Method Descriptions
 -------------------
 
+.. _class_Engine_method_get_architecture_name:
+
+- :ref:`String<class_String>` **get_architecture_name** **(** **)** |const|
+
+Returns the name of the CPU architecture the Godot binary was built for. Possible return values are ``x86_64``, ``x86_32``, ``arm64``, ``armv7``, ``rv64``, ``riscv``, ``ppc64``, ``ppc``, ``wasm64`` and ``wasm32``.
+
+To detect whether the current CPU architecture is 64-bit, you can use the fact that all 64-bit architecture names have ``64`` in their name:
+
+::
+
+    if "64" in Engine.get_architecture_name():
+        print("Running on 64-bit CPU.")
+    else:
+        print("Running on 32-bit CPU.")
+
+\ **Note:** :ref:`get_architecture_name<class_Engine_method_get_architecture_name>` does *not* return the name of the host CPU architecture. For example, if running an x86_32 Godot binary on a x86_64 system, the returned value will be ``x86_32``.
+
+----
+
 .. _class_Engine_method_get_author_info:
 
 - :ref:`Dictionary<class_Dictionary>` **get_author_info** **(** **)** |const|
@@ -193,7 +216,7 @@ Returns engine author information in a Dictionary.
 
 .. _class_Engine_method_get_copyright_info:
 
-- :ref:`Array<class_Array>` **get_copyright_info** **(** **)** |const|
+- :ref:`Dictionary[]<class_Dictionary>` **get_copyright_info** **(** **)** |const|
 
 Returns an Array of copyright information Dictionaries.
 
@@ -368,6 +391,14 @@ The ``hex`` value is encoded as follows, from left to right: one byte for the ma
 
 
 
+----
+
+.. _class_Engine_method_get_write_movie_path:
+
+- :ref:`String<class_String>` **get_write_movie_path** **(** **)** |const|
+
+Returns the path to the :ref:`MovieWriter<class_MovieWriter>`'s output file, or an empty string if the engine wasn't started in Movie Maker mode. This path can be absolute or relative depending on how the user specified it.
+
 ----
 
 .. _class_Engine_method_has_singleton:

+ 205 - 203
classes/class_environment.rst

@@ -43,199 +43,199 @@ Tutorials
 Properties
 ----------
 
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`adjustment_brightness<class_Environment_property_adjustment_brightness>`                                               | ``1.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`Texture<class_Texture>`                              | :ref:`adjustment_color_correction<class_Environment_property_adjustment_color_correction>`                                   |                             |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`adjustment_contrast<class_Environment_property_adjustment_contrast>`                                                   | ``1.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`bool<class_bool>`                                    | :ref:`adjustment_enabled<class_Environment_property_adjustment_enabled>`                                                     | ``false``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`adjustment_saturation<class_Environment_property_adjustment_saturation>`                                               | ``1.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`Color<class_Color>`                                  | :ref:`ambient_light_color<class_Environment_property_ambient_light_color>`                                                   | ``Color(0, 0, 0, 1)``       |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`ambient_light_energy<class_Environment_property_ambient_light_energy>`                                                 | ``1.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`ambient_light_sky_contribution<class_Environment_property_ambient_light_sky_contribution>`                             | ``1.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`AmbientSource<enum_Environment_AmbientSource>`       | :ref:`ambient_light_source<class_Environment_property_ambient_light_source>`                                                 | ``0``                       |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`bool<class_bool>`                                    | :ref:`auto_exposure_enabled<class_Environment_property_auto_exposure_enabled>`                                               | ``false``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`auto_exposure_max_luma<class_Environment_property_auto_exposure_max_luma>`                                             | ``8.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`auto_exposure_min_luma<class_Environment_property_auto_exposure_min_luma>`                                             | ``0.05``                    |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`auto_exposure_scale<class_Environment_property_auto_exposure_scale>`                                                   | ``0.4``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`auto_exposure_speed<class_Environment_property_auto_exposure_speed>`                                                   | ``0.5``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`int<class_int>`                                      | :ref:`background_camera_feed_id<class_Environment_property_background_camera_feed_id>`                                       | ``1``                       |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`int<class_int>`                                      | :ref:`background_canvas_max_layer<class_Environment_property_background_canvas_max_layer>`                                   | ``0``                       |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`Color<class_Color>`                                  | :ref:`background_color<class_Environment_property_background_color>`                                                         | ``Color(0, 0, 0, 1)``       |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`background_energy<class_Environment_property_background_energy>`                                                       | ``1.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`BGMode<enum_Environment_BGMode>`                     | :ref:`background_mode<class_Environment_property_background_mode>`                                                           | ``0``                       |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`fog_aerial_perspective<class_Environment_property_fog_aerial_perspective>`                                             | ``0.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`fog_density<class_Environment_property_fog_density>`                                                                   | ``0.001``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`bool<class_bool>`                                    | :ref:`fog_enabled<class_Environment_property_fog_enabled>`                                                                   | ``false``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`fog_height<class_Environment_property_fog_height>`                                                                     | ``0.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`fog_height_density<class_Environment_property_fog_height_density>`                                                     | ``0.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`Color<class_Color>`                                  | :ref:`fog_light_color<class_Environment_property_fog_light_color>`                                                           | ``Color(0.5, 0.6, 0.7, 1)`` |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`fog_light_energy<class_Environment_property_fog_light_energy>`                                                         | ``1.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`fog_sun_scatter<class_Environment_property_fog_sun_scatter>`                                                           | ``0.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`GlowBlendMode<enum_Environment_GlowBlendMode>`       | :ref:`glow_blend_mode<class_Environment_property_glow_blend_mode>`                                                           | ``2``                       |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`glow_bloom<class_Environment_property_glow_bloom>`                                                                     | ``0.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`bool<class_bool>`                                    | :ref:`glow_enabled<class_Environment_property_glow_enabled>`                                                                 | ``false``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`glow_hdr_luminance_cap<class_Environment_property_glow_hdr_luminance_cap>`                                             | ``12.0``                    |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`glow_hdr_scale<class_Environment_property_glow_hdr_scale>`                                                             | ``2.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`glow_hdr_threshold<class_Environment_property_glow_hdr_threshold>`                                                     | ``1.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`glow_intensity<class_Environment_property_glow_intensity>`                                                             | ``0.8``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`glow_levels/1<class_Environment_property_glow_levels/1>`                                                               | ``0.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`glow_levels/2<class_Environment_property_glow_levels/2>`                                                               | ``0.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`glow_levels/3<class_Environment_property_glow_levels/3>`                                                               | ``1.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`glow_levels/4<class_Environment_property_glow_levels/4>`                                                               | ``0.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`glow_levels/5<class_Environment_property_glow_levels/5>`                                                               | ``1.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`glow_levels/6<class_Environment_property_glow_levels/6>`                                                               | ``0.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`glow_levels/7<class_Environment_property_glow_levels/7>`                                                               | ``0.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`Texture<class_Texture>`                              | :ref:`glow_map<class_Environment_property_glow_map>`                                                                         |                             |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`glow_map_strength<class_Environment_property_glow_map_strength>`                                                       | ``0.8``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`glow_mix<class_Environment_property_glow_mix>`                                                                         | ``0.05``                    |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`bool<class_bool>`                                    | :ref:`glow_normalized<class_Environment_property_glow_normalized>`                                                           | ``false``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`glow_strength<class_Environment_property_glow_strength>`                                                               | ``1.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`ReflectionSource<enum_Environment_ReflectionSource>` | :ref:`reflected_light_source<class_Environment_property_reflected_light_source>`                                             | ``0``                       |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`sdfgi_bounce_feedback<class_Environment_property_sdfgi_bounce_feedback>`                                               | ``0.5``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`sdfgi_cascade0_distance<class_Environment_property_sdfgi_cascade0_distance>`                                           | ``12.8``                    |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`int<class_int>`                                      | :ref:`sdfgi_cascades<class_Environment_property_sdfgi_cascades>`                                                             | ``4``                       |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`bool<class_bool>`                                    | :ref:`sdfgi_enabled<class_Environment_property_sdfgi_enabled>`                                                               | ``false``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`sdfgi_energy<class_Environment_property_sdfgi_energy>`                                                                 | ``1.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`sdfgi_max_distance<class_Environment_property_sdfgi_max_distance>`                                                     | ``204.8``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`sdfgi_min_cell_size<class_Environment_property_sdfgi_min_cell_size>`                                                   | ``0.2``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`sdfgi_normal_bias<class_Environment_property_sdfgi_normal_bias>`                                                       | ``1.1``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`sdfgi_probe_bias<class_Environment_property_sdfgi_probe_bias>`                                                         | ``1.1``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`bool<class_bool>`                                    | :ref:`sdfgi_read_sky_light<class_Environment_property_sdfgi_read_sky_light>`                                                 | ``true``                    |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`bool<class_bool>`                                    | :ref:`sdfgi_use_occlusion<class_Environment_property_sdfgi_use_occlusion>`                                                   | ``false``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`SDFGIYScale<enum_Environment_SDFGIYScale>`           | :ref:`sdfgi_y_scale<class_Environment_property_sdfgi_y_scale>`                                                               | ``1``                       |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`Sky<class_Sky>`                                      | :ref:`sky<class_Environment_property_sky>`                                                                                   |                             |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`sky_custom_fov<class_Environment_property_sky_custom_fov>`                                                             | ``0.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`Vector3<class_Vector3>`                              | :ref:`sky_rotation<class_Environment_property_sky_rotation>`                                                                 | ``Vector3(0, 0, 0)``        |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`ssao_ao_channel_affect<class_Environment_property_ssao_ao_channel_affect>`                                             | ``0.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`ssao_detail<class_Environment_property_ssao_detail>`                                                                   | ``0.5``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`bool<class_bool>`                                    | :ref:`ssao_enabled<class_Environment_property_ssao_enabled>`                                                                 | ``false``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`ssao_horizon<class_Environment_property_ssao_horizon>`                                                                 | ``0.06``                    |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`ssao_intensity<class_Environment_property_ssao_intensity>`                                                             | ``2.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`ssao_light_affect<class_Environment_property_ssao_light_affect>`                                                       | ``0.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`ssao_power<class_Environment_property_ssao_power>`                                                                     | ``1.5``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`ssao_radius<class_Environment_property_ssao_radius>`                                                                   | ``1.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`ssao_sharpness<class_Environment_property_ssao_sharpness>`                                                             | ``0.98``                    |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`bool<class_bool>`                                    | :ref:`ssil_enabled<class_Environment_property_ssil_enabled>`                                                                 | ``false``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`ssil_intensity<class_Environment_property_ssil_intensity>`                                                             | ``1.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`ssil_normal_rejection<class_Environment_property_ssil_normal_rejection>`                                               | ``1.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`ssil_radius<class_Environment_property_ssil_radius>`                                                                   | ``5.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`ssil_sharpness<class_Environment_property_ssil_sharpness>`                                                             | ``0.98``                    |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`ssr_depth_tolerance<class_Environment_property_ssr_depth_tolerance>`                                                   | ``0.2``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`bool<class_bool>`                                    | :ref:`ssr_enabled<class_Environment_property_ssr_enabled>`                                                                   | ``false``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`ssr_fade_in<class_Environment_property_ssr_fade_in>`                                                                   | ``0.15``                    |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`ssr_fade_out<class_Environment_property_ssr_fade_out>`                                                                 | ``2.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`int<class_int>`                                      | :ref:`ssr_max_steps<class_Environment_property_ssr_max_steps>`                                                               | ``64``                      |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`tonemap_exposure<class_Environment_property_tonemap_exposure>`                                                         | ``1.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`ToneMapper<enum_Environment_ToneMapper>`             | :ref:`tonemap_mode<class_Environment_property_tonemap_mode>`                                                                 | ``0``                       |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`tonemap_white<class_Environment_property_tonemap_white>`                                                               | ``1.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`Color<class_Color>`                                  | :ref:`volumetric_fog_albedo<class_Environment_property_volumetric_fog_albedo>`                                               | ``Color(1, 1, 1, 1)``       |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`volumetric_fog_ambient_inject<class_Environment_property_volumetric_fog_ambient_inject>`                               | ``0.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`volumetric_fog_anisotropy<class_Environment_property_volumetric_fog_anisotropy>`                                       | ``0.2``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`volumetric_fog_density<class_Environment_property_volumetric_fog_density>`                                             | ``0.05``                    |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`volumetric_fog_detail_spread<class_Environment_property_volumetric_fog_detail_spread>`                                 | ``2.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`Color<class_Color>`                                  | :ref:`volumetric_fog_emission<class_Environment_property_volumetric_fog_emission>`                                           | ``Color(0, 0, 0, 1)``       |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`volumetric_fog_emission_energy<class_Environment_property_volumetric_fog_emission_energy>`                             | ``1.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`bool<class_bool>`                                    | :ref:`volumetric_fog_enabled<class_Environment_property_volumetric_fog_enabled>`                                             | ``false``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`volumetric_fog_gi_inject<class_Environment_property_volumetric_fog_gi_inject>`                                         | ``0.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`volumetric_fog_length<class_Environment_property_volumetric_fog_length>`                                               | ``64.0``                    |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`volumetric_fog_temporal_reprojection_amount<class_Environment_property_volumetric_fog_temporal_reprojection_amount>`   | ``0.9``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`bool<class_bool>`                                    | :ref:`volumetric_fog_temporal_reprojection_enabled<class_Environment_property_volumetric_fog_temporal_reprojection_enabled>` | ``true``                    |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`adjustment_brightness<class_Environment_property_adjustment_brightness>`                                               | ``1.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`Texture<class_Texture>`                              | :ref:`adjustment_color_correction<class_Environment_property_adjustment_color_correction>`                                   |                                   |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`adjustment_contrast<class_Environment_property_adjustment_contrast>`                                                   | ``1.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`bool<class_bool>`                                    | :ref:`adjustment_enabled<class_Environment_property_adjustment_enabled>`                                                     | ``false``                         |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`adjustment_saturation<class_Environment_property_adjustment_saturation>`                                               | ``1.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`Color<class_Color>`                                  | :ref:`ambient_light_color<class_Environment_property_ambient_light_color>`                                                   | ``Color(0, 0, 0, 1)``             |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`ambient_light_energy<class_Environment_property_ambient_light_energy>`                                                 | ``1.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`ambient_light_sky_contribution<class_Environment_property_ambient_light_sky_contribution>`                             | ``1.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`AmbientSource<enum_Environment_AmbientSource>`       | :ref:`ambient_light_source<class_Environment_property_ambient_light_source>`                                                 | ``0``                             |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`bool<class_bool>`                                    | :ref:`auto_exposure_enabled<class_Environment_property_auto_exposure_enabled>`                                               | ``false``                         |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`auto_exposure_max_luma<class_Environment_property_auto_exposure_max_luma>`                                             | ``8.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`auto_exposure_min_luma<class_Environment_property_auto_exposure_min_luma>`                                             | ``0.05``                          |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`auto_exposure_scale<class_Environment_property_auto_exposure_scale>`                                                   | ``0.4``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`auto_exposure_speed<class_Environment_property_auto_exposure_speed>`                                                   | ``0.5``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`int<class_int>`                                      | :ref:`background_camera_feed_id<class_Environment_property_background_camera_feed_id>`                                       | ``1``                             |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`int<class_int>`                                      | :ref:`background_canvas_max_layer<class_Environment_property_background_canvas_max_layer>`                                   | ``0``                             |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`Color<class_Color>`                                  | :ref:`background_color<class_Environment_property_background_color>`                                                         | ``Color(0, 0, 0, 1)``             |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`background_energy<class_Environment_property_background_energy>`                                                       | ``1.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`BGMode<enum_Environment_BGMode>`                     | :ref:`background_mode<class_Environment_property_background_mode>`                                                           | ``0``                             |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`fog_aerial_perspective<class_Environment_property_fog_aerial_perspective>`                                             | ``0.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`fog_density<class_Environment_property_fog_density>`                                                                   | ``0.01``                          |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`bool<class_bool>`                                    | :ref:`fog_enabled<class_Environment_property_fog_enabled>`                                                                   | ``false``                         |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`fog_height<class_Environment_property_fog_height>`                                                                     | ``0.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`fog_height_density<class_Environment_property_fog_height_density>`                                                     | ``0.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`Color<class_Color>`                                  | :ref:`fog_light_color<class_Environment_property_fog_light_color>`                                                           | ``Color(0.518, 0.553, 0.608, 1)`` |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`fog_light_energy<class_Environment_property_fog_light_energy>`                                                         | ``1.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`fog_sun_scatter<class_Environment_property_fog_sun_scatter>`                                                           | ``0.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`GlowBlendMode<enum_Environment_GlowBlendMode>`       | :ref:`glow_blend_mode<class_Environment_property_glow_blend_mode>`                                                           | ``2``                             |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`glow_bloom<class_Environment_property_glow_bloom>`                                                                     | ``0.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`bool<class_bool>`                                    | :ref:`glow_enabled<class_Environment_property_glow_enabled>`                                                                 | ``false``                         |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`glow_hdr_luminance_cap<class_Environment_property_glow_hdr_luminance_cap>`                                             | ``12.0``                          |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`glow_hdr_scale<class_Environment_property_glow_hdr_scale>`                                                             | ``2.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`glow_hdr_threshold<class_Environment_property_glow_hdr_threshold>`                                                     | ``1.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`glow_intensity<class_Environment_property_glow_intensity>`                                                             | ``0.8``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`glow_levels/1<class_Environment_property_glow_levels/1>`                                                               | ``0.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`glow_levels/2<class_Environment_property_glow_levels/2>`                                                               | ``0.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`glow_levels/3<class_Environment_property_glow_levels/3>`                                                               | ``1.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`glow_levels/4<class_Environment_property_glow_levels/4>`                                                               | ``0.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`glow_levels/5<class_Environment_property_glow_levels/5>`                                                               | ``1.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`glow_levels/6<class_Environment_property_glow_levels/6>`                                                               | ``0.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`glow_levels/7<class_Environment_property_glow_levels/7>`                                                               | ``0.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`Texture<class_Texture>`                              | :ref:`glow_map<class_Environment_property_glow_map>`                                                                         |                                   |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`glow_map_strength<class_Environment_property_glow_map_strength>`                                                       | ``0.8``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`glow_mix<class_Environment_property_glow_mix>`                                                                         | ``0.05``                          |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`bool<class_bool>`                                    | :ref:`glow_normalized<class_Environment_property_glow_normalized>`                                                           | ``false``                         |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`glow_strength<class_Environment_property_glow_strength>`                                                               | ``1.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`ReflectionSource<enum_Environment_ReflectionSource>` | :ref:`reflected_light_source<class_Environment_property_reflected_light_source>`                                             | ``0``                             |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`sdfgi_bounce_feedback<class_Environment_property_sdfgi_bounce_feedback>`                                               | ``0.5``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`sdfgi_cascade0_distance<class_Environment_property_sdfgi_cascade0_distance>`                                           | ``12.8``                          |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`int<class_int>`                                      | :ref:`sdfgi_cascades<class_Environment_property_sdfgi_cascades>`                                                             | ``4``                             |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`bool<class_bool>`                                    | :ref:`sdfgi_enabled<class_Environment_property_sdfgi_enabled>`                                                               | ``false``                         |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`sdfgi_energy<class_Environment_property_sdfgi_energy>`                                                                 | ``1.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`sdfgi_max_distance<class_Environment_property_sdfgi_max_distance>`                                                     | ``204.8``                         |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`sdfgi_min_cell_size<class_Environment_property_sdfgi_min_cell_size>`                                                   | ``0.2``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`sdfgi_normal_bias<class_Environment_property_sdfgi_normal_bias>`                                                       | ``1.1``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`sdfgi_probe_bias<class_Environment_property_sdfgi_probe_bias>`                                                         | ``1.1``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`bool<class_bool>`                                    | :ref:`sdfgi_read_sky_light<class_Environment_property_sdfgi_read_sky_light>`                                                 | ``true``                          |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`bool<class_bool>`                                    | :ref:`sdfgi_use_occlusion<class_Environment_property_sdfgi_use_occlusion>`                                                   | ``false``                         |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`SDFGIYScale<enum_Environment_SDFGIYScale>`           | :ref:`sdfgi_y_scale<class_Environment_property_sdfgi_y_scale>`                                                               | ``1``                             |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`Sky<class_Sky>`                                      | :ref:`sky<class_Environment_property_sky>`                                                                                   |                                   |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`sky_custom_fov<class_Environment_property_sky_custom_fov>`                                                             | ``0.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`Vector3<class_Vector3>`                              | :ref:`sky_rotation<class_Environment_property_sky_rotation>`                                                                 | ``Vector3(0, 0, 0)``              |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`ssao_ao_channel_affect<class_Environment_property_ssao_ao_channel_affect>`                                             | ``0.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`ssao_detail<class_Environment_property_ssao_detail>`                                                                   | ``0.5``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`bool<class_bool>`                                    | :ref:`ssao_enabled<class_Environment_property_ssao_enabled>`                                                                 | ``false``                         |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`ssao_horizon<class_Environment_property_ssao_horizon>`                                                                 | ``0.06``                          |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`ssao_intensity<class_Environment_property_ssao_intensity>`                                                             | ``2.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`ssao_light_affect<class_Environment_property_ssao_light_affect>`                                                       | ``0.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`ssao_power<class_Environment_property_ssao_power>`                                                                     | ``1.5``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`ssao_radius<class_Environment_property_ssao_radius>`                                                                   | ``1.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`ssao_sharpness<class_Environment_property_ssao_sharpness>`                                                             | ``0.98``                          |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`bool<class_bool>`                                    | :ref:`ssil_enabled<class_Environment_property_ssil_enabled>`                                                                 | ``false``                         |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`ssil_intensity<class_Environment_property_ssil_intensity>`                                                             | ``1.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`ssil_normal_rejection<class_Environment_property_ssil_normal_rejection>`                                               | ``1.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`ssil_radius<class_Environment_property_ssil_radius>`                                                                   | ``5.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`ssil_sharpness<class_Environment_property_ssil_sharpness>`                                                             | ``0.98``                          |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`ssr_depth_tolerance<class_Environment_property_ssr_depth_tolerance>`                                                   | ``0.2``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`bool<class_bool>`                                    | :ref:`ssr_enabled<class_Environment_property_ssr_enabled>`                                                                   | ``false``                         |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`ssr_fade_in<class_Environment_property_ssr_fade_in>`                                                                   | ``0.15``                          |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`ssr_fade_out<class_Environment_property_ssr_fade_out>`                                                                 | ``2.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`int<class_int>`                                      | :ref:`ssr_max_steps<class_Environment_property_ssr_max_steps>`                                                               | ``64``                            |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`tonemap_exposure<class_Environment_property_tonemap_exposure>`                                                         | ``1.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`ToneMapper<enum_Environment_ToneMapper>`             | :ref:`tonemap_mode<class_Environment_property_tonemap_mode>`                                                                 | ``0``                             |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`tonemap_white<class_Environment_property_tonemap_white>`                                                               | ``1.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`Color<class_Color>`                                  | :ref:`volumetric_fog_albedo<class_Environment_property_volumetric_fog_albedo>`                                               | ``Color(1, 1, 1, 1)``             |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`volumetric_fog_ambient_inject<class_Environment_property_volumetric_fog_ambient_inject>`                               | ``0.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`volumetric_fog_anisotropy<class_Environment_property_volumetric_fog_anisotropy>`                                       | ``0.2``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`volumetric_fog_density<class_Environment_property_volumetric_fog_density>`                                             | ``0.05``                          |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`volumetric_fog_detail_spread<class_Environment_property_volumetric_fog_detail_spread>`                                 | ``2.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`Color<class_Color>`                                  | :ref:`volumetric_fog_emission<class_Environment_property_volumetric_fog_emission>`                                           | ``Color(0, 0, 0, 1)``             |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`volumetric_fog_emission_energy<class_Environment_property_volumetric_fog_emission_energy>`                             | ``1.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`bool<class_bool>`                                    | :ref:`volumetric_fog_enabled<class_Environment_property_volumetric_fog_enabled>`                                             | ``false``                         |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`volumetric_fog_gi_inject<class_Environment_property_volumetric_fog_gi_inject>`                                         | ``1.0``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`volumetric_fog_length<class_Environment_property_volumetric_fog_length>`                                               | ``64.0``                          |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`volumetric_fog_temporal_reprojection_amount<class_Environment_property_volumetric_fog_temporal_reprojection_amount>`   | ``0.9``                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`bool<class_bool>`                                    | :ref:`volumetric_fog_temporal_reprojection_enabled<class_Environment_property_volumetric_fog_temporal_reprojection_enabled>` | ``true``                          |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
 
 Methods
 -------
@@ -719,7 +719,7 @@ This is useful to simulate `aerial perspective <https://en.wikipedia.org/wiki/Ae
 - :ref:`float<class_float>` **fog_density**
 
 +-----------+------------------------+
-| *Default* | ``0.001``              |
+| *Default* | ``0.01``               |
 +-----------+------------------------+
 | *Setter*  | set_fog_density(value) |
 +-----------+------------------------+
@@ -782,13 +782,13 @@ The density used to increase fog as height decreases. To make fog increase as he
 
 - :ref:`Color<class_Color>` **fog_light_color**
 
-+-----------+-----------------------------+
-| *Default* | ``Color(0.5, 0.6, 0.7, 1)`` |
-+-----------+-----------------------------+
-| *Setter*  | set_fog_light_color(value)  |
-+-----------+-----------------------------+
-| *Getter*  | get_fog_light_color()       |
-+-----------+-----------------------------+
++-----------+-----------------------------------+
+| *Default* | ``Color(0.518, 0.553, 0.608, 1)`` |
++-----------+-----------------------------------+
+| *Setter*  | set_fog_light_color(value)        |
++-----------+-----------------------------------+
+| *Getter*  | get_fog_light_color()             |
++-----------+-----------------------------------+
 
 The fog's color.
 
@@ -1881,14 +1881,16 @@ Enables the volumetric fog effect. Volumetric fog uses a screen-aligned froxel b
 - :ref:`float<class_float>` **volumetric_fog_gi_inject**
 
 +-----------+-------------------------------------+
-| *Default* | ``0.0``                             |
+| *Default* | ``1.0``                             |
 +-----------+-------------------------------------+
 | *Setter*  | set_volumetric_fog_gi_inject(value) |
 +-----------+-------------------------------------+
 | *Getter*  | get_volumetric_fog_gi_inject()      |
 +-----------+-------------------------------------+
 
-Scales the strength of Global Illumination used in the volumetric fog. A value of ``0`` means that Global Illumination will not impact the volumetric fog.
+Scales the strength of Global Illumination used in the volumetric fog. A value of ``0.0`` means that Global Illumination will not impact the volumetric fog.
+
+\ **Note:** Only :ref:`VoxelGI<class_VoxelGI>` and SDFGI (:ref:`sdfgi_enabled<class_Environment_property_sdfgi_enabled>`) are taken into account when using :ref:`volumetric_fog_gi_inject<class_Environment_property_volumetric_fog_gi_inject>`. Global illumination from :ref:`LightmapGI<class_LightmapGI>`, :ref:`ReflectionProbe<class_ReflectionProbe>` and SSIL (see :ref:`ssil_enabled<class_Environment_property_ssil_enabled>`) will be ignored by volumetric fog.
 
 ----
 

+ 4 - 4
classes/class_file.rst

@@ -100,7 +100,7 @@ Methods
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                             | :ref:`get_8<class_File_method_get_8>` **(** **)** |const|                                                                                                                                                                      |
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                       | :ref:`get_as_text<class_File_method_get_as_text>` **(** **)** |const|                                                                                                                                                          |
+| :ref:`String<class_String>`                       | :ref:`get_as_text<class_File_method_get_as_text>` **(** :ref:`bool<class_bool>` skip_cr=false **)** |const|                                                                                                                    |
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`PackedByteArray<class_PackedByteArray>`     | :ref:`get_buffer<class_File_method_get_buffer>` **(** :ref:`int<class_int>` length **)** |const|                                                                                                                               |
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -333,11 +333,11 @@ Returns the next 8 bits from the file as an integer. See :ref:`store_8<class_Fil
 
 .. _class_File_method_get_as_text:
 
-- :ref:`String<class_String>` **get_as_text** **(** **)** |const|
+- :ref:`String<class_String>` **get_as_text** **(** :ref:`bool<class_bool>` skip_cr=false **)** |const|
 
-Returns the whole file as a :ref:`String<class_String>`.
+Returns the whole file as a :ref:`String<class_String>`. Text is interpreted as being UTF-8 encoded.
 
-Text is interpreted as being UTF-8 encoded.
+If ``skip_cr`` is ``true``, carriage return characters (``\r``, CR) will be ignored when parsing the UTF-8, so that only line feed characters (``\n``, LF) represent a new line (Unix convention).
 
 ----
 

+ 1 - 1
classes/class_filedialog.rst

@@ -175,7 +175,7 @@ Property Descriptions
 
 The file system access scope. See enum ``Access`` constants.
 
-\ **Warning:** Currently, in sandboxed environments such as HTML5 builds or sandboxed macOS apps, FileDialog cannot access the host file system. See `godot-proposals#1123 <https://github.com/godotengine/godot-proposals/issues/1123>`__.
+\ **Warning:** Currently, in sandboxed environments such as Web builds or sandboxed macOS apps, FileDialog cannot access the host file system. See `godot-proposals#1123 <https://github.com/godotengine/godot-proposals/issues/1123>`__.
 
 ----
 

+ 4 - 4
classes/class_float.rst

@@ -85,13 +85,13 @@ Operators
 +-------------------------------------+--------------------------------------------------------------------------------------------------------------+
 | :ref:`float<class_float>`           | :ref:`operator /<class_float_operator_div_float>` **(** :ref:`int<class_int>` right **)**                    |
 +-------------------------------------+--------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`             | :ref:`operator <<class_float_operator_lt_bool>` **(** :ref:`float<class_float>` right **)**                  |
+| :ref:`bool<class_bool>`             | :ref:`operator \<<class_float_operator_lt_bool>` **(** :ref:`float<class_float>` right **)**                 |
 +-------------------------------------+--------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`             | :ref:`operator <<class_float_operator_lt_bool>` **(** :ref:`int<class_int>` right **)**                      |
+| :ref:`bool<class_bool>`             | :ref:`operator \<<class_float_operator_lt_bool>` **(** :ref:`int<class_int>` right **)**                     |
 +-------------------------------------+--------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`             | :ref:`operator <=<class_float_operator_lte_bool>` **(** :ref:`float<class_float>` right **)**                |
+| :ref:`bool<class_bool>`             | :ref:`operator \<=<class_float_operator_lte_bool>` **(** :ref:`float<class_float>` right **)**               |
 +-------------------------------------+--------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`             | :ref:`operator <=<class_float_operator_lte_bool>` **(** :ref:`int<class_int>` right **)**                    |
+| :ref:`bool<class_bool>`             | :ref:`operator \<=<class_float_operator_lte_bool>` **(** :ref:`int<class_int>` right **)**                   |
 +-------------------------------------+--------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`             | :ref:`operator ==<class_float_operator_eq_bool>` **(** :ref:`float<class_float>` right **)**                 |
 +-------------------------------------+--------------------------------------------------------------------------------------------------------------+

+ 6 - 6
classes/class_font.rst

@@ -95,7 +95,7 @@ Method Descriptions
 
 - :ref:`float<class_float>` **draw_char** **(** :ref:`RID<class_RID>` canvas_item, :ref:`Vector2<class_Vector2>` pos, :ref:`int<class_int>` char, :ref:`int<class_int>` font_size, :ref:`Color<class_Color>` modulate=Color(1, 1, 1, 1) **)** |const|
 
-Draw a single Unicode character ``char`` into a canvas item using the font, at a given position, with ``modulate`` color. ``position`` specifies the baseline, not the top. To draw from the top, *ascent* must be added to the Y axis.
+Draw a single Unicode character ``char`` into a canvas item using the font, at a given position, with ``modulate`` color. ``pos`` specifies the baseline, not the top. To draw from the top, *ascent* must be added to the Y axis.
 
 \ **Note:** Do not use this function to draw strings character by character, use :ref:`draw_string<class_Font_method_draw_string>` or :ref:`TextLine<class_TextLine>` instead.
 
@@ -105,7 +105,7 @@ Draw a single Unicode character ``char`` into a canvas item using the font, at a
 
 - :ref:`float<class_float>` **draw_char_outline** **(** :ref:`RID<class_RID>` canvas_item, :ref:`Vector2<class_Vector2>` pos, :ref:`int<class_int>` char, :ref:`int<class_int>` font_size, :ref:`int<class_int>` size=-1, :ref:`Color<class_Color>` modulate=Color(1, 1, 1, 1) **)** |const|
 
-Draw a single Unicode character ``char`` outline into a canvas item using the font, at a given position, with ``modulate`` color and ``size`` outline size. ``position`` specifies the baseline, not the top. To draw from the top, *ascent* must be added to the Y axis.
+Draw a single Unicode character ``char`` outline into a canvas item using the font, at a given position, with ``modulate`` color and ``size`` outline size. ``pos`` specifies the baseline, not the top. To draw from the top, *ascent* must be added to the Y axis.
 
 \ **Note:** Do not use this function to draw strings character by character, use :ref:`draw_string<class_Font_method_draw_string>` or :ref:`TextLine<class_TextLine>` instead.
 
@@ -115,7 +115,7 @@ Draw a single Unicode character ``char`` outline into a canvas item using the fo
 
 - void **draw_multiline_string** **(** :ref:`RID<class_RID>` canvas_item, :ref:`Vector2<class_Vector2>` pos, :ref:`String<class_String>` text, :ref:`HorizontalAlignment<enum_@GlobalScope_HorizontalAlignment>` alignment=0, :ref:`float<class_float>` width=-1, :ref:`int<class_int>` font_size=16, :ref:`int<class_int>` max_lines=-1, :ref:`Color<class_Color>` modulate=Color(1, 1, 1, 1), :ref:`LineBreakFlag<enum_TextServer_LineBreakFlag>` brk_flags=3, :ref:`JustificationFlag<enum_TextServer_JustificationFlag>` jst_flags=3, :ref:`Direction<enum_TextServer_Direction>` direction=0, :ref:`Orientation<enum_TextServer_Orientation>` orientation=0 **)** |const|
 
-Breaks ``text`` to the lines using rules specified by ``flags`` and draws it into a canvas item using the font, at a given position, with ``modulate`` color, optionally clipping the width and aligning horizontally. ``position`` specifies the baseline of the first line, not the top. To draw from the top, *ascent* must be added to the Y axis.
+Breaks ``text`` into lines using rules specified by ``brk_flags`` and draws it into a canvas item using the font, at a given position, with ``modulate`` color, optionally clipping the width and aligning horizontally. ``pos`` specifies the baseline of the first line, not the top. To draw from the top, *ascent* must be added to the Y axis.
 
 See also :ref:`CanvasItem.draw_multiline_string<class_CanvasItem_method_draw_multiline_string>`.
 
@@ -125,7 +125,7 @@ See also :ref:`CanvasItem.draw_multiline_string<class_CanvasItem_method_draw_mul
 
 - void **draw_multiline_string_outline** **(** :ref:`RID<class_RID>` canvas_item, :ref:`Vector2<class_Vector2>` pos, :ref:`String<class_String>` text, :ref:`HorizontalAlignment<enum_@GlobalScope_HorizontalAlignment>` alignment=0, :ref:`float<class_float>` width=-1, :ref:`int<class_int>` font_size=16, :ref:`int<class_int>` max_lines=-1, :ref:`int<class_int>` size=1, :ref:`Color<class_Color>` modulate=Color(1, 1, 1, 1), :ref:`LineBreakFlag<enum_TextServer_LineBreakFlag>` brk_flags=3, :ref:`JustificationFlag<enum_TextServer_JustificationFlag>` jst_flags=3, :ref:`Direction<enum_TextServer_Direction>` direction=0, :ref:`Orientation<enum_TextServer_Orientation>` orientation=0 **)** |const|
 
-Breaks ``text`` to the lines using rules specified by ``flags`` and draws text outline into a canvas item using the font, at a given position, with ``modulate`` color and ``size`` outline size, optionally clipping the width and aligning horizontally. ``position`` specifies the baseline of the first line, not the top. To draw from the top, *ascent* must be added to the Y axis.
+Breaks ``text`` to the lines using rules specified by ``brk_flags`` and draws text outline into a canvas item using the font, at a given position, with ``modulate`` color and ``size`` outline size, optionally clipping the width and aligning horizontally. ``pos`` specifies the baseline of the first line, not the top. To draw from the top, *ascent* must be added to the Y axis.
 
 See also :ref:`CanvasItem.draw_multiline_string_outline<class_CanvasItem_method_draw_multiline_string_outline>`.
 
@@ -135,7 +135,7 @@ See also :ref:`CanvasItem.draw_multiline_string_outline<class_CanvasItem_method_
 
 - void **draw_string** **(** :ref:`RID<class_RID>` canvas_item, :ref:`Vector2<class_Vector2>` pos, :ref:`String<class_String>` text, :ref:`HorizontalAlignment<enum_@GlobalScope_HorizontalAlignment>` alignment=0, :ref:`float<class_float>` width=-1, :ref:`int<class_int>` font_size=16, :ref:`Color<class_Color>` modulate=Color(1, 1, 1, 1), :ref:`JustificationFlag<enum_TextServer_JustificationFlag>` jst_flags=3, :ref:`Direction<enum_TextServer_Direction>` direction=0, :ref:`Orientation<enum_TextServer_Orientation>` orientation=0 **)** |const|
 
-Draw ``text`` into a canvas item using the font, at a given position, with ``modulate`` color, optionally clipping the width and aligning horizontally. ``position`` specifies the baseline, not the top. To draw from the top, *ascent* must be added to the Y axis.
+Draw ``text`` into a canvas item using the font, at a given position, with ``modulate`` color, optionally clipping the width and aligning horizontally. ``pos`` specifies the baseline, not the top. To draw from the top, *ascent* must be added to the Y axis.
 
 See also :ref:`CanvasItem.draw_string<class_CanvasItem_method_draw_string>`.
 
@@ -145,7 +145,7 @@ See also :ref:`CanvasItem.draw_string<class_CanvasItem_method_draw_string>`.
 
 - void **draw_string_outline** **(** :ref:`RID<class_RID>` canvas_item, :ref:`Vector2<class_Vector2>` pos, :ref:`String<class_String>` text, :ref:`HorizontalAlignment<enum_@GlobalScope_HorizontalAlignment>` alignment=0, :ref:`float<class_float>` width=-1, :ref:`int<class_int>` font_size=16, :ref:`int<class_int>` size=1, :ref:`Color<class_Color>` modulate=Color(1, 1, 1, 1), :ref:`JustificationFlag<enum_TextServer_JustificationFlag>` jst_flags=3, :ref:`Direction<enum_TextServer_Direction>` direction=0, :ref:`Orientation<enum_TextServer_Orientation>` orientation=0 **)** |const|
 
-Draw ``text`` outline into a canvas item using the font, at a given position, with ``modulate`` color and ``size`` outline size, optionally clipping the width and aligning horizontally. ``position`` specifies the baseline, not the top. To draw from the top, *ascent* must be added to the Y axis.
+Draw ``text`` outline into a canvas item using the font, at a given position, with ``modulate`` color and ``size`` outline size, optionally clipping the width and aligning horizontally. ``pos`` specifies the baseline, not the top. To draw from the top, *ascent* must be added to the Y axis.
 
 See also :ref:`CanvasItem.draw_string_outline<class_CanvasItem_method_draw_string_outline>`.
 

+ 17 - 17
classes/class_fontfile.rst

@@ -60,7 +60,7 @@ Properties
 ----------
 
 +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------------------+
-| :ref:`bool<class_bool>`                                         | :ref:`antialiased<class_FontFile_property_antialiased>`                                               | ``true``              |
+| :ref:`FontAntialiasing<enum_TextServer_FontAntialiasing>`       | :ref:`antialiasing<class_FontFile_property_antialiasing>`                                             | ``1``                 |
 +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------------------+
 | :ref:`PackedByteArray<class_PackedByteArray>`                   | :ref:`data<class_FontFile_property_data>`                                                             | ``PackedByteArray()`` |
 +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------------------+
@@ -127,7 +127,7 @@ Methods
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                             | :ref:`get_glyph_index<class_FontFile_method_get_glyph_index>` **(** :ref:`int<class_int>` size, :ref:`int<class_int>` char, :ref:`int<class_int>` variation_selector **)** |const|                                                                     |
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                         | :ref:`get_glyph_list<class_FontFile_method_get_glyph_list>` **(** :ref:`int<class_int>` cache_index, :ref:`Vector2i<class_Vector2i>` size **)** |const|                                                                                                |
+| :ref:`PackedInt32Array<class_PackedInt32Array>`   | :ref:`get_glyph_list<class_FontFile_method_get_glyph_list>` **(** :ref:`int<class_int>` cache_index, :ref:`Vector2i<class_Vector2i>` size **)** |const|                                                                                                |
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Vector2<class_Vector2>`                     | :ref:`get_glyph_offset<class_FontFile_method_get_glyph_offset>` **(** :ref:`int<class_int>` cache_index, :ref:`Vector2i<class_Vector2i>` size, :ref:`int<class_int>` glyph **)** |const|                                                               |
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -139,7 +139,7 @@ Methods
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Vector2<class_Vector2>`                     | :ref:`get_kerning<class_FontFile_method_get_kerning>` **(** :ref:`int<class_int>` cache_index, :ref:`int<class_int>` size, :ref:`Vector2i<class_Vector2i>` glyph_pair **)** |const|                                                                    |
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                         | :ref:`get_kerning_list<class_FontFile_method_get_kerning_list>` **(** :ref:`int<class_int>` cache_index, :ref:`int<class_int>` size **)** |const|                                                                                                      |
+| :ref:`Vector2i[]<class_Vector2i>`                 | :ref:`get_kerning_list<class_FontFile_method_get_kerning_list>` **(** :ref:`int<class_int>` cache_index, :ref:`int<class_int>` size **)** |const|                                                                                                      |
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                           | :ref:`get_language_support_override<class_FontFile_method_get_language_support_override>` **(** :ref:`String<class_String>` language **)** |const|                                                                                                     |
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -149,7 +149,7 @@ Methods
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`get_script_support_overrides<class_FontFile_method_get_script_support_overrides>` **(** **)** |const|                                                                                                                                            |
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                         | :ref:`get_size_cache_list<class_FontFile_method_get_size_cache_list>` **(** :ref:`int<class_int>` cache_index **)** |const|                                                                                                                            |
+| :ref:`Vector2i[]<class_Vector2i>`                 | :ref:`get_size_cache_list<class_FontFile_method_get_size_cache_list>` **(** :ref:`int<class_int>` cache_index **)** |const|                                                                                                                            |
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                             | :ref:`get_texture_count<class_FontFile_method_get_texture_count>` **(** :ref:`int<class_int>` cache_index, :ref:`Vector2i<class_Vector2i>` size **)** |const|                                                                                          |
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -225,19 +225,19 @@ Methods
 Property Descriptions
 ---------------------
 
-.. _class_FontFile_property_antialiased:
+.. _class_FontFile_property_antialiasing:
 
-- :ref:`bool<class_bool>` **antialiased**
+- :ref:`FontAntialiasing<enum_TextServer_FontAntialiasing>` **antialiasing**
 
-+-----------+------------------------+
-| *Default* | ``true``               |
-+-----------+------------------------+
-| *Setter*  | set_antialiased(value) |
-+-----------+------------------------+
-| *Getter*  | is_antialiased()       |
-+-----------+------------------------+
++-----------+-------------------------+
+| *Default* | ``1``                   |
++-----------+-------------------------+
+| *Setter*  | set_antialiasing(value) |
++-----------+-------------------------+
+| *Getter*  | get_antialiasing()      |
++-----------+-------------------------+
 
-If set to ``true``, font 8-bit anitialiased glyph rendering is supported and enabled.
+Font anti-aliasing mode.
 
 ----
 
@@ -602,7 +602,7 @@ Returns the glyph index of a ``char``, optionally modified by the ``variation_se
 
 .. _class_FontFile_method_get_glyph_list:
 
-- :ref:`Array<class_Array>` **get_glyph_list** **(** :ref:`int<class_int>` cache_index, :ref:`Vector2i<class_Vector2i>` size **)** |const|
+- :ref:`PackedInt32Array<class_PackedInt32Array>` **get_glyph_list** **(** :ref:`int<class_int>` cache_index, :ref:`Vector2i<class_Vector2i>` size **)** |const|
 
 Returns list of rendered glyphs in the cache entry.
 
@@ -650,7 +650,7 @@ Returns kerning for the pair of glyphs.
 
 .. _class_FontFile_method_get_kerning_list:
 
-- :ref:`Array<class_Array>` **get_kerning_list** **(** :ref:`int<class_int>` cache_index, :ref:`int<class_int>` size **)** |const|
+- :ref:`Vector2i[]<class_Vector2i>` **get_kerning_list** **(** :ref:`int<class_int>` cache_index, :ref:`int<class_int>` size **)** |const|
 
 Returns list of the kerning overrides.
 
@@ -690,7 +690,7 @@ Returns list of script support overrides.
 
 .. _class_FontFile_method_get_size_cache_list:
 
-- :ref:`Array<class_Array>` **get_size_cache_list** **(** :ref:`int<class_int>` cache_index **)** |const|
+- :ref:`Vector2i[]<class_Vector2i>` **get_size_cache_list** **(** :ref:`int<class_int>` cache_index **)** |const|
 
 Returns list of the font sizes in the cache. Each size is ``Vector2i`` with font size and outline size.
 

+ 42 - 18
classes/class_generic6dofjoint3d.rst

@@ -427,9 +427,13 @@ The maximum amount of force that can occur, when rotating around the X axis.
 
 - :ref:`float<class_float>` **angular_limit_x/lower_angle**
 
-+-----------+---------+
-| *Default* | ``0.0`` |
-+-----------+---------+
++-----------+--------------------+
+| *Default* | ``0.0``            |
++-----------+--------------------+
+| *Setter*  | set_param_x(value) |
++-----------+--------------------+
+| *Getter*  | get_param_x()      |
++-----------+--------------------+
 
 The minimum rotation in negative direction to break loose and rotate around the X axis.
 
@@ -471,9 +475,13 @@ The speed of all rotations across the X axis.
 
 - :ref:`float<class_float>` **angular_limit_x/upper_angle**
 
-+-----------+---------+
-| *Default* | ``0.0`` |
-+-----------+---------+
++-----------+--------------------+
+| *Default* | ``0.0``            |
++-----------+--------------------+
+| *Setter*  | set_param_x(value) |
++-----------+--------------------+
+| *Getter*  | get_param_x()      |
++-----------+--------------------+
 
 The minimum rotation in positive direction to break loose and rotate around the X axis.
 
@@ -547,9 +555,13 @@ The maximum amount of force that can occur, when rotating around the Y axis.
 
 - :ref:`float<class_float>` **angular_limit_y/lower_angle**
 
-+-----------+---------+
-| *Default* | ``0.0`` |
-+-----------+---------+
++-----------+--------------------+
+| *Default* | ``0.0``            |
++-----------+--------------------+
+| *Setter*  | set_param_y(value) |
++-----------+--------------------+
+| *Getter*  | get_param_y()      |
++-----------+--------------------+
 
 The minimum rotation in negative direction to break loose and rotate around the Y axis.
 
@@ -591,9 +603,13 @@ The speed of all rotations across the Y axis.
 
 - :ref:`float<class_float>` **angular_limit_y/upper_angle**
 
-+-----------+---------+
-| *Default* | ``0.0`` |
-+-----------+---------+
++-----------+--------------------+
+| *Default* | ``0.0``            |
++-----------+--------------------+
+| *Setter*  | set_param_y(value) |
++-----------+--------------------+
+| *Getter*  | get_param_y()      |
++-----------+--------------------+
 
 The minimum rotation in positive direction to break loose and rotate around the Y axis.
 
@@ -667,9 +683,13 @@ The maximum amount of force that can occur, when rotating around the Z axis.
 
 - :ref:`float<class_float>` **angular_limit_z/lower_angle**
 
-+-----------+---------+
-| *Default* | ``0.0`` |
-+-----------+---------+
++-----------+--------------------+
+| *Default* | ``0.0``            |
++-----------+--------------------+
+| *Setter*  | set_param_z(value) |
++-----------+--------------------+
+| *Getter*  | get_param_z()      |
++-----------+--------------------+
 
 The minimum rotation in negative direction to break loose and rotate around the Z axis.
 
@@ -711,9 +731,13 @@ The speed of all rotations across the Z axis.
 
 - :ref:`float<class_float>` **angular_limit_z/upper_angle**
 
-+-----------+---------+
-| *Default* | ``0.0`` |
-+-----------+---------+
++-----------+--------------------+
+| *Default* | ``0.0``            |
++-----------+--------------------+
+| *Setter*  | set_param_z(value) |
++-----------+--------------------+
+| *Getter*  | get_param_z()      |
++-----------+--------------------+
 
 The minimum rotation in positive direction to break loose and rotate around the Z axis.
 

+ 62 - 52
classes/class_geometry2d.rst

@@ -22,49 +22,51 @@ Geometry2D provides users with a set of helper functions to create geometric sha
 Methods
 -------
 
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                           | :ref:`clip_polygons<class_Geometry2D_method_clip_polygons>` **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polygon_a, :ref:`PackedVector2Array<class_PackedVector2Array>` polygon_b **)**                                                                                                 |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                           | :ref:`clip_polyline_with_polygon<class_Geometry2D_method_clip_polyline_with_polygon>` **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polyline, :ref:`PackedVector2Array<class_PackedVector2Array>` polygon **)**                                                                          |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PackedVector2Array<class_PackedVector2Array>` | :ref:`convex_hull<class_Geometry2D_method_convex_hull>` **(** :ref:`PackedVector2Array<class_PackedVector2Array>` points **)**                                                                                                                                                                       |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                           | :ref:`exclude_polygons<class_Geometry2D_method_exclude_polygons>` **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polygon_a, :ref:`PackedVector2Array<class_PackedVector2Array>` polygon_b **)**                                                                                           |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>`                       | :ref:`get_closest_point_to_segment<class_Geometry2D_method_get_closest_point_to_segment>` **(** :ref:`Vector2<class_Vector2>` point, :ref:`Vector2<class_Vector2>` s1, :ref:`Vector2<class_Vector2>` s2 **)**                                                                                        |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>`                       | :ref:`get_closest_point_to_segment_uncapped<class_Geometry2D_method_get_closest_point_to_segment_uncapped>` **(** :ref:`Vector2<class_Vector2>` point, :ref:`Vector2<class_Vector2>` s1, :ref:`Vector2<class_Vector2>` s2 **)**                                                                      |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PackedVector2Array<class_PackedVector2Array>` | :ref:`get_closest_points_between_segments<class_Geometry2D_method_get_closest_points_between_segments>` **(** :ref:`Vector2<class_Vector2>` p1, :ref:`Vector2<class_Vector2>` q1, :ref:`Vector2<class_Vector2>` p2, :ref:`Vector2<class_Vector2>` q2 **)**                                           |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                           | :ref:`intersect_polygons<class_Geometry2D_method_intersect_polygons>` **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polygon_a, :ref:`PackedVector2Array<class_PackedVector2Array>` polygon_b **)**                                                                                       |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                           | :ref:`intersect_polyline_with_polygon<class_Geometry2D_method_intersect_polyline_with_polygon>` **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polyline, :ref:`PackedVector2Array<class_PackedVector2Array>` polygon **)**                                                                |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                             | :ref:`is_point_in_circle<class_Geometry2D_method_is_point_in_circle>` **(** :ref:`Vector2<class_Vector2>` point, :ref:`Vector2<class_Vector2>` circle_position, :ref:`float<class_float>` circle_radius **)**                                                                                        |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                             | :ref:`is_point_in_polygon<class_Geometry2D_method_is_point_in_polygon>` **(** :ref:`Vector2<class_Vector2>` point, :ref:`PackedVector2Array<class_PackedVector2Array>` polygon **)**                                                                                                                 |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                             | :ref:`is_polygon_clockwise<class_Geometry2D_method_is_polygon_clockwise>` **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polygon **)**                                                                                                                                                    |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Variant<class_Variant>`                       | :ref:`line_intersects_line<class_Geometry2D_method_line_intersects_line>` **(** :ref:`Vector2<class_Vector2>` from_a, :ref:`Vector2<class_Vector2>` dir_a, :ref:`Vector2<class_Vector2>` from_b, :ref:`Vector2<class_Vector2>` dir_b **)**                                                           |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Dictionary<class_Dictionary>`                 | :ref:`make_atlas<class_Geometry2D_method_make_atlas>` **(** :ref:`PackedVector2Array<class_PackedVector2Array>` sizes **)**                                                                                                                                                                          |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                           | :ref:`merge_polygons<class_Geometry2D_method_merge_polygons>` **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polygon_a, :ref:`PackedVector2Array<class_PackedVector2Array>` polygon_b **)**                                                                                               |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                           | :ref:`offset_polygon<class_Geometry2D_method_offset_polygon>` **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polygon, :ref:`float<class_float>` delta, :ref:`PolyJoinType<enum_Geometry2D_PolyJoinType>` join_type=0 **)**                                                                |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                           | :ref:`offset_polyline<class_Geometry2D_method_offset_polyline>` **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polyline, :ref:`float<class_float>` delta, :ref:`PolyJoinType<enum_Geometry2D_PolyJoinType>` join_type=0, :ref:`PolyEndType<enum_Geometry2D_PolyEndType>` end_type=3 **)** |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                             | :ref:`point_is_inside_triangle<class_Geometry2D_method_point_is_inside_triangle>` **(** :ref:`Vector2<class_Vector2>` point, :ref:`Vector2<class_Vector2>` a, :ref:`Vector2<class_Vector2>` b, :ref:`Vector2<class_Vector2>` c **)** |const|                                                         |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Variant<class_Variant>`                       | :ref:`segment_intersects_segment<class_Geometry2D_method_segment_intersects_segment>` **(** :ref:`Vector2<class_Vector2>` from_a, :ref:`Vector2<class_Vector2>` to_a, :ref:`Vector2<class_Vector2>` from_b, :ref:`Vector2<class_Vector2>` to_b **)**                                                 |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PackedInt32Array<class_PackedInt32Array>`     | :ref:`triangulate_delaunay<class_Geometry2D_method_triangulate_delaunay>` **(** :ref:`PackedVector2Array<class_PackedVector2Array>` points **)**                                                                                                                                                     |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PackedInt32Array<class_PackedInt32Array>`     | :ref:`triangulate_polygon<class_Geometry2D_method_triangulate_polygon>` **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polygon **)**                                                                                                                                                      |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedVector2Array[]<class_PackedVector2Array>` | :ref:`clip_polygons<class_Geometry2D_method_clip_polygons>` **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polygon_a, :ref:`PackedVector2Array<class_PackedVector2Array>` polygon_b **)**                                                                                                 |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedVector2Array[]<class_PackedVector2Array>` | :ref:`clip_polyline_with_polygon<class_Geometry2D_method_clip_polyline_with_polygon>` **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polyline, :ref:`PackedVector2Array<class_PackedVector2Array>` polygon **)**                                                                          |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedVector2Array<class_PackedVector2Array>`   | :ref:`convex_hull<class_Geometry2D_method_convex_hull>` **(** :ref:`PackedVector2Array<class_PackedVector2Array>` points **)**                                                                                                                                                                       |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedVector2Array[]<class_PackedVector2Array>` | :ref:`exclude_polygons<class_Geometry2D_method_exclude_polygons>` **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polygon_a, :ref:`PackedVector2Array<class_PackedVector2Array>` polygon_b **)**                                                                                           |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>`                         | :ref:`get_closest_point_to_segment<class_Geometry2D_method_get_closest_point_to_segment>` **(** :ref:`Vector2<class_Vector2>` point, :ref:`Vector2<class_Vector2>` s1, :ref:`Vector2<class_Vector2>` s2 **)**                                                                                        |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>`                         | :ref:`get_closest_point_to_segment_uncapped<class_Geometry2D_method_get_closest_point_to_segment_uncapped>` **(** :ref:`Vector2<class_Vector2>` point, :ref:`Vector2<class_Vector2>` s1, :ref:`Vector2<class_Vector2>` s2 **)**                                                                      |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedVector2Array<class_PackedVector2Array>`   | :ref:`get_closest_points_between_segments<class_Geometry2D_method_get_closest_points_between_segments>` **(** :ref:`Vector2<class_Vector2>` p1, :ref:`Vector2<class_Vector2>` q1, :ref:`Vector2<class_Vector2>` p2, :ref:`Vector2<class_Vector2>` q2 **)**                                           |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedVector2Array[]<class_PackedVector2Array>` | :ref:`intersect_polygons<class_Geometry2D_method_intersect_polygons>` **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polygon_a, :ref:`PackedVector2Array<class_PackedVector2Array>` polygon_b **)**                                                                                       |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedVector2Array[]<class_PackedVector2Array>` | :ref:`intersect_polyline_with_polygon<class_Geometry2D_method_intersect_polyline_with_polygon>` **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polyline, :ref:`PackedVector2Array<class_PackedVector2Array>` polygon **)**                                                                |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                               | :ref:`is_point_in_circle<class_Geometry2D_method_is_point_in_circle>` **(** :ref:`Vector2<class_Vector2>` point, :ref:`Vector2<class_Vector2>` circle_position, :ref:`float<class_float>` circle_radius **)**                                                                                        |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                               | :ref:`is_point_in_polygon<class_Geometry2D_method_is_point_in_polygon>` **(** :ref:`Vector2<class_Vector2>` point, :ref:`PackedVector2Array<class_PackedVector2Array>` polygon **)**                                                                                                                 |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                               | :ref:`is_polygon_clockwise<class_Geometry2D_method_is_polygon_clockwise>` **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polygon **)**                                                                                                                                                    |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Variant<class_Variant>`                         | :ref:`line_intersects_line<class_Geometry2D_method_line_intersects_line>` **(** :ref:`Vector2<class_Vector2>` from_a, :ref:`Vector2<class_Vector2>` dir_a, :ref:`Vector2<class_Vector2>` from_b, :ref:`Vector2<class_Vector2>` dir_b **)**                                                           |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>`                   | :ref:`make_atlas<class_Geometry2D_method_make_atlas>` **(** :ref:`PackedVector2Array<class_PackedVector2Array>` sizes **)**                                                                                                                                                                          |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedVector2Array[]<class_PackedVector2Array>` | :ref:`merge_polygons<class_Geometry2D_method_merge_polygons>` **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polygon_a, :ref:`PackedVector2Array<class_PackedVector2Array>` polygon_b **)**                                                                                               |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedVector2Array[]<class_PackedVector2Array>` | :ref:`offset_polygon<class_Geometry2D_method_offset_polygon>` **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polygon, :ref:`float<class_float>` delta, :ref:`PolyJoinType<enum_Geometry2D_PolyJoinType>` join_type=0 **)**                                                                |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedVector2Array[]<class_PackedVector2Array>` | :ref:`offset_polyline<class_Geometry2D_method_offset_polyline>` **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polyline, :ref:`float<class_float>` delta, :ref:`PolyJoinType<enum_Geometry2D_PolyJoinType>` join_type=0, :ref:`PolyEndType<enum_Geometry2D_PolyEndType>` end_type=3 **)** |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                               | :ref:`point_is_inside_triangle<class_Geometry2D_method_point_is_inside_triangle>` **(** :ref:`Vector2<class_Vector2>` point, :ref:`Vector2<class_Vector2>` a, :ref:`Vector2<class_Vector2>` b, :ref:`Vector2<class_Vector2>` c **)** |const|                                                         |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                             | :ref:`segment_intersects_circle<class_Geometry2D_method_segment_intersects_circle>` **(** :ref:`Vector2<class_Vector2>` segment_from, :ref:`Vector2<class_Vector2>` segment_to, :ref:`Vector2<class_Vector2>` circle_position, :ref:`float<class_float>` circle_radius **)**                         |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Variant<class_Variant>`                         | :ref:`segment_intersects_segment<class_Geometry2D_method_segment_intersects_segment>` **(** :ref:`Vector2<class_Vector2>` from_a, :ref:`Vector2<class_Vector2>` to_a, :ref:`Vector2<class_Vector2>` from_b, :ref:`Vector2<class_Vector2>` to_b **)**                                                 |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedInt32Array<class_PackedInt32Array>`       | :ref:`triangulate_delaunay<class_Geometry2D_method_triangulate_delaunay>` **(** :ref:`PackedVector2Array<class_PackedVector2Array>` points **)**                                                                                                                                                     |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedInt32Array<class_PackedInt32Array>`       | :ref:`triangulate_polygon<class_Geometry2D_method_triangulate_polygon>` **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polygon **)**                                                                                                                                                      |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Enumerations
 ------------
@@ -138,7 +140,7 @@ Method Descriptions
 
 .. _class_Geometry2D_method_clip_polygons:
 
-- :ref:`Array<class_Array>` **clip_polygons** **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polygon_a, :ref:`PackedVector2Array<class_PackedVector2Array>` polygon_b **)**
+- :ref:`PackedVector2Array[]<class_PackedVector2Array>` **clip_polygons** **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polygon_a, :ref:`PackedVector2Array<class_PackedVector2Array>` polygon_b **)**
 
 Clips ``polygon_a`` against ``polygon_b`` and returns an array of clipped polygons. This performs :ref:`OPERATION_DIFFERENCE<class_Geometry2D_constant_OPERATION_DIFFERENCE>` between polygons. Returns an empty array if ``polygon_b`` completely overlaps ``polygon_a``.
 
@@ -148,7 +150,7 @@ If ``polygon_b`` is enclosed by ``polygon_a``, returns an outer polygon (boundar
 
 .. _class_Geometry2D_method_clip_polyline_with_polygon:
 
-- :ref:`Array<class_Array>` **clip_polyline_with_polygon** **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polyline, :ref:`PackedVector2Array<class_PackedVector2Array>` polygon **)**
+- :ref:`PackedVector2Array[]<class_PackedVector2Array>` **clip_polyline_with_polygon** **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polyline, :ref:`PackedVector2Array<class_PackedVector2Array>` polygon **)**
 
 Clips ``polyline`` against ``polygon`` and returns an array of clipped polylines. This performs :ref:`OPERATION_DIFFERENCE<class_Geometry2D_constant_OPERATION_DIFFERENCE>` between the polyline and the polygon. This operation can be thought of as cutting a line with a closed shape.
 
@@ -164,7 +166,7 @@ Given an array of :ref:`Vector2<class_Vector2>`\ s, returns the convex hull as a
 
 .. _class_Geometry2D_method_exclude_polygons:
 
-- :ref:`Array<class_Array>` **exclude_polygons** **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polygon_a, :ref:`PackedVector2Array<class_PackedVector2Array>` polygon_b **)**
+- :ref:`PackedVector2Array[]<class_PackedVector2Array>` **exclude_polygons** **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polygon_a, :ref:`PackedVector2Array<class_PackedVector2Array>` polygon_b **)**
 
 Mutually excludes common area defined by intersection of ``polygon_a`` and ``polygon_b`` (see :ref:`intersect_polygons<class_Geometry2D_method_intersect_polygons>`) and returns an array of excluded polygons. This performs :ref:`OPERATION_XOR<class_Geometry2D_constant_OPERATION_XOR>` between polygons. In other words, returns all but common area between polygons.
 
@@ -198,7 +200,7 @@ Given the two 2D segments (``p1``, ``q1``) and (``p2``, ``q2``), finds those two
 
 .. _class_Geometry2D_method_intersect_polygons:
 
-- :ref:`Array<class_Array>` **intersect_polygons** **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polygon_a, :ref:`PackedVector2Array<class_PackedVector2Array>` polygon_b **)**
+- :ref:`PackedVector2Array[]<class_PackedVector2Array>` **intersect_polygons** **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polygon_a, :ref:`PackedVector2Array<class_PackedVector2Array>` polygon_b **)**
 
 Intersects ``polygon_a`` with ``polygon_b`` and returns an array of intersected polygons. This performs :ref:`OPERATION_INTERSECTION<class_Geometry2D_constant_OPERATION_INTERSECTION>` between polygons. In other words, returns common area shared by polygons. Returns an empty array if no intersection occurs.
 
@@ -208,7 +210,7 @@ The operation may result in an outer polygon (boundary) and inner polygon (hole)
 
 .. _class_Geometry2D_method_intersect_polyline_with_polygon:
 
-- :ref:`Array<class_Array>` **intersect_polyline_with_polygon** **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polyline, :ref:`PackedVector2Array<class_PackedVector2Array>` polygon **)**
+- :ref:`PackedVector2Array[]<class_PackedVector2Array>` **intersect_polyline_with_polygon** **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polyline, :ref:`PackedVector2Array<class_PackedVector2Array>` polygon **)**
 
 Intersects ``polyline`` with ``polygon`` and returns an array of intersected polylines. This performs :ref:`OPERATION_INTERSECTION<class_Geometry2D_constant_OPERATION_INTERSECTION>` between the polyline and the polygon. This operation can be thought of as chopping a line with a closed shape.
 
@@ -252,13 +254,13 @@ Checks if the two lines (``from_a``, ``dir_a``) and (``from_b``, ``dir_b``) inte
 
 - :ref:`Dictionary<class_Dictionary>` **make_atlas** **(** :ref:`PackedVector2Array<class_PackedVector2Array>` sizes **)**
 
-Given an array of :ref:`Vector2<class_Vector2>`\ s representing tiles, builds an atlas. The returned dictionary has two keys: ``points`` is a vector of :ref:`Vector2<class_Vector2>` that specifies the positions of each tile, ``size`` contains the overall size of the whole atlas as :ref:`Vector2<class_Vector2>`.
+Given an array of :ref:`Vector2<class_Vector2>`\ s representing tiles, builds an atlas. The returned dictionary has two keys: ``points`` is an array of :ref:`Vector2<class_Vector2>` that specifies the positions of each tile, ``size`` contains the overall size of the whole atlas as :ref:`Vector2<class_Vector2>`.
 
 ----
 
 .. _class_Geometry2D_method_merge_polygons:
 
-- :ref:`Array<class_Array>` **merge_polygons** **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polygon_a, :ref:`PackedVector2Array<class_PackedVector2Array>` polygon_b **)**
+- :ref:`PackedVector2Array[]<class_PackedVector2Array>` **merge_polygons** **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polygon_a, :ref:`PackedVector2Array<class_PackedVector2Array>` polygon_b **)**
 
 Merges (combines) ``polygon_a`` and ``polygon_b`` and returns an array of merged polygons. This performs :ref:`OPERATION_UNION<class_Geometry2D_constant_OPERATION_UNION>` between polygons.
 
@@ -268,7 +270,7 @@ The operation may result in an outer polygon (boundary) and multiple inner polyg
 
 .. _class_Geometry2D_method_offset_polygon:
 
-- :ref:`Array<class_Array>` **offset_polygon** **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polygon, :ref:`float<class_float>` delta, :ref:`PolyJoinType<enum_Geometry2D_PolyJoinType>` join_type=0 **)**
+- :ref:`PackedVector2Array[]<class_PackedVector2Array>` **offset_polygon** **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polygon, :ref:`float<class_float>` delta, :ref:`PolyJoinType<enum_Geometry2D_PolyJoinType>` join_type=0 **)**
 
 Inflates or deflates ``polygon`` by ``delta`` units (pixels). If ``delta`` is positive, makes the polygon grow outward. If ``delta`` is negative, shrinks the polygon inward. Returns an array of polygons because inflating/deflating may result in multiple discrete polygons. Returns an empty array if ``delta`` is negative and the absolute value of it approximately exceeds the minimum bounding rectangle dimensions of the polygon.
 
@@ -302,7 +304,7 @@ The operation may result in an outer polygon (boundary) and inner polygon (hole)
 
 .. _class_Geometry2D_method_offset_polyline:
 
-- :ref:`Array<class_Array>` **offset_polyline** **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polyline, :ref:`float<class_float>` delta, :ref:`PolyJoinType<enum_Geometry2D_PolyJoinType>` join_type=0, :ref:`PolyEndType<enum_Geometry2D_PolyEndType>` end_type=3 **)**
+- :ref:`PackedVector2Array[]<class_PackedVector2Array>` **offset_polyline** **(** :ref:`PackedVector2Array<class_PackedVector2Array>` polyline, :ref:`float<class_float>` delta, :ref:`PolyJoinType<enum_Geometry2D_PolyJoinType>` join_type=0, :ref:`PolyEndType<enum_Geometry2D_PolyEndType>` end_type=3 **)**
 
 Inflates or deflates ``polyline`` by ``delta`` units (pixels), producing polygons. If ``delta`` is positive, makes the polyline grow outward. Returns an array of polygons because inflating/deflating may result in multiple discrete polygons. If ``delta`` is negative, returns an empty array.
 
@@ -322,6 +324,14 @@ Returns if ``point`` is inside the triangle specified by ``a``, ``b`` and ``c``.
 
 ----
 
+.. _class_Geometry2D_method_segment_intersects_circle:
+
+- :ref:`float<class_float>` **segment_intersects_circle** **(** :ref:`Vector2<class_Vector2>` segment_from, :ref:`Vector2<class_Vector2>` segment_to, :ref:`Vector2<class_Vector2>` circle_position, :ref:`float<class_float>` circle_radius **)**
+
+Given the 2D segment (``segment_from``, ``segment_to``), returns the position on the segment (as a number between 0 and 1) at which the segment hits the circle that is located at position ``circle_position`` and has radius ``circle_radius``. If the segment does not intersect the circle, -1 is returned (this is also the case if the line extending the segment would intersect the circle, but the segment does not).
+
+----
+
 .. _class_Geometry2D_method_segment_intersects_segment:
 
 - :ref:`Variant<class_Variant>` **segment_intersects_segment** **(** :ref:`Vector2<class_Vector2>` from_a, :ref:`Vector2<class_Vector2>` to_a, :ref:`Vector2<class_Vector2>` from_b, :ref:`Vector2<class_Vector2>` to_b **)**

+ 6 - 6
classes/class_geometry3d.rst

@@ -23,11 +23,11 @@ Methods
 -------
 
 +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                           | :ref:`build_box_planes<class_Geometry3D_method_build_box_planes>` **(** :ref:`Vector3<class_Vector3>` extents **)**                                                                                                                                                         |
+| :ref:`Plane[]<class_Plane>`                         | :ref:`build_box_planes<class_Geometry3D_method_build_box_planes>` **(** :ref:`Vector3<class_Vector3>` extents **)**                                                                                                                                                         |
 +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                           | :ref:`build_capsule_planes<class_Geometry3D_method_build_capsule_planes>` **(** :ref:`float<class_float>` radius, :ref:`float<class_float>` height, :ref:`int<class_int>` sides, :ref:`int<class_int>` lats, Vector3.Axis axis=2 **)**                                      |
+| :ref:`Plane[]<class_Plane>`                         | :ref:`build_capsule_planes<class_Geometry3D_method_build_capsule_planes>` **(** :ref:`float<class_float>` radius, :ref:`float<class_float>` height, :ref:`int<class_int>` sides, :ref:`int<class_int>` lats, Vector3.Axis axis=2 **)**                                      |
 +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                           | :ref:`build_cylinder_planes<class_Geometry3D_method_build_cylinder_planes>` **(** :ref:`float<class_float>` radius, :ref:`float<class_float>` height, :ref:`int<class_int>` sides, Vector3.Axis axis=2 **)**                                                                |
+| :ref:`Plane[]<class_Plane>`                         | :ref:`build_cylinder_planes<class_Geometry3D_method_build_cylinder_planes>` **(** :ref:`float<class_float>` radius, :ref:`float<class_float>` height, :ref:`int<class_int>` sides, Vector3.Axis axis=2 **)**                                                                |
 +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`PackedVector3Array<class_PackedVector3Array>` | :ref:`clip_polygon<class_Geometry3D_method_clip_polygon>` **(** :ref:`PackedVector3Array<class_PackedVector3Array>` points, :ref:`Plane<class_Plane>` plane **)**                                                                                                           |
 +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -53,7 +53,7 @@ Method Descriptions
 
 .. _class_Geometry3D_method_build_box_planes:
 
-- :ref:`Array<class_Array>` **build_box_planes** **(** :ref:`Vector3<class_Vector3>` extents **)**
+- :ref:`Plane[]<class_Plane>` **build_box_planes** **(** :ref:`Vector3<class_Vector3>` extents **)**
 
 Returns an array with 6 :ref:`Plane<class_Plane>`\ s that describe the sides of a box centered at the origin. The box size is defined by ``extents``, which represents one (positive) corner of the box (i.e. half its actual size).
 
@@ -61,7 +61,7 @@ Returns an array with 6 :ref:`Plane<class_Plane>`\ s that describe the sides of
 
 .. _class_Geometry3D_method_build_capsule_planes:
 
-- :ref:`Array<class_Array>` **build_capsule_planes** **(** :ref:`float<class_float>` radius, :ref:`float<class_float>` height, :ref:`int<class_int>` sides, :ref:`int<class_int>` lats, Vector3.Axis axis=2 **)**
+- :ref:`Plane[]<class_Plane>` **build_capsule_planes** **(** :ref:`float<class_float>` radius, :ref:`float<class_float>` height, :ref:`int<class_int>` sides, :ref:`int<class_int>` lats, Vector3.Axis axis=2 **)**
 
 Returns an array of :ref:`Plane<class_Plane>`\ s closely bounding a faceted capsule centered at the origin with radius ``radius`` and height ``height``. The parameter ``sides`` defines how many planes will be generated for the side part of the capsule, whereas ``lats`` gives the number of latitudinal steps at the bottom and top of the capsule. The parameter ``axis`` describes the axis along which the capsule is oriented (0 for X, 1 for Y, 2 for Z).
 
@@ -69,7 +69,7 @@ Returns an array of :ref:`Plane<class_Plane>`\ s closely bounding a faceted caps
 
 .. _class_Geometry3D_method_build_cylinder_planes:
 
-- :ref:`Array<class_Array>` **build_cylinder_planes** **(** :ref:`float<class_float>` radius, :ref:`float<class_float>` height, :ref:`int<class_int>` sides, Vector3.Axis axis=2 **)**
+- :ref:`Plane[]<class_Plane>` **build_cylinder_planes** **(** :ref:`float<class_float>` radius, :ref:`float<class_float>` height, :ref:`int<class_int>` sides, Vector3.Axis axis=2 **)**
 
 Returns an array of :ref:`Plane<class_Plane>`\ s closely bounding a faceted cylinder centered at the origin with radius ``radius`` and height ``height``. The parameter ``sides`` defines how many planes will be generated for the round part of the cylinder. The parameter ``axis`` describes the axis along which the cylinder is oriented (0 for X, 1 for Y, 2 for Z).
 

+ 6 - 6
classes/class_geometryinstance3d.rst

@@ -58,11 +58,11 @@ Methods
 -------
 
 +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Variant<class_Variant>` | :ref:`get_shader_instance_uniform<class_GeometryInstance3D_method_get_shader_instance_uniform>` **(** :ref:`StringName<class_StringName>` uniform **)** |const|                              |
+| :ref:`Variant<class_Variant>` | :ref:`get_instance_shader_uniform<class_GeometryInstance3D_method_get_instance_shader_uniform>` **(** :ref:`StringName<class_StringName>` uniform **)** |const|                              |
 +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                          | :ref:`set_custom_aabb<class_GeometryInstance3D_method_set_custom_aabb>` **(** :ref:`AABB<class_AABB>` aabb **)**                                                                             |
 +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                          | :ref:`set_shader_instance_uniform<class_GeometryInstance3D_method_set_shader_instance_uniform>` **(** :ref:`StringName<class_StringName>` uniform, :ref:`Variant<class_Variant>` value **)** |
+| void                          | :ref:`set_instance_shader_uniform<class_GeometryInstance3D_method_set_instance_shader_uniform>` **(** :ref:`StringName<class_StringName>` uniform, :ref:`Variant<class_Variant>` value **)** |
 +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Enumerations
@@ -366,9 +366,9 @@ Controls which instances will be faded when approaching the limits of the visibi
 Method Descriptions
 -------------------
 
-.. _class_GeometryInstance3D_method_get_shader_instance_uniform:
+.. _class_GeometryInstance3D_method_get_instance_shader_uniform:
 
-- :ref:`Variant<class_Variant>` **get_shader_instance_uniform** **(** :ref:`StringName<class_StringName>` uniform **)** |const|
+- :ref:`Variant<class_Variant>` **get_instance_shader_uniform** **(** :ref:`StringName<class_StringName>` uniform **)** |const|
 
 ----
 
@@ -380,9 +380,9 @@ Overrides the bounding box of this node with a custom one. To remove it, set an
 
 ----
 
-.. _class_GeometryInstance3D_method_set_shader_instance_uniform:
+.. _class_GeometryInstance3D_method_set_instance_shader_uniform:
 
-- void **set_shader_instance_uniform** **(** :ref:`StringName<class_StringName>` uniform, :ref:`Variant<class_Variant>` value **)**
+- void **set_instance_shader_uniform** **(** :ref:`StringName<class_StringName>` uniform, :ref:`Variant<class_Variant>` value **)**
 
 .. |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.)`

+ 94 - 10
classes/class_gltfcamera.rst

@@ -12,7 +12,19 @@ GLTFCamera
 
 **Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
+Represents a GLTF camera.
 
+Description
+-----------
+
+Represents a camera as defined by the base GLTF spec.
+
+Tutorials
+---------
+
+- `GLTF camera detailed specification <https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#reference-camera>`__
+
+- `GLTF camera spec and example file <https://github.com/KhronosGroup/glTF-Tutorials/blob/master/gltfTutorial/gltfTutorial_015_SimpleCameras.md>`__
 
 Properties
 ----------
@@ -22,10 +34,25 @@ Properties
 +---------------------------+-----------------------------------------------------------+------------+
 | :ref:`float<class_float>` | :ref:`depth_near<class_GLTFCamera_property_depth_near>`   | ``0.05``   |
 +---------------------------+-----------------------------------------------------------+------------+
-| :ref:`float<class_float>` | :ref:`fov_size<class_GLTFCamera_property_fov_size>`       | ``75.0``   |
+| :ref:`float<class_float>` | :ref:`fov<class_GLTFCamera_property_fov>`                 | ``1.309``  |
 +---------------------------+-----------------------------------------------------------+------------+
 | :ref:`bool<class_bool>`   | :ref:`perspective<class_GLTFCamera_property_perspective>` | ``true``   |
 +---------------------------+-----------------------------------------------------------+------------+
+| :ref:`float<class_float>` | :ref:`size_mag<class_GLTFCamera_property_size_mag>`       | ``0.5``    |
++---------------------------+-----------------------------------------------------------+------------+
+
+Methods
+-------
+
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`GLTFCamera<class_GLTFCamera>` | :ref:`from_dictionary<class_GLTFCamera_method_from_dictionary>` **(** :ref:`Dictionary<class_Dictionary>` dictionary **)** |static| |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`GLTFCamera<class_GLTFCamera>` | :ref:`from_node<class_GLTFCamera_method_from_node>` **(** :ref:`Camera3D<class_Camera3D>` camera_node **)** |static|                |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>` | :ref:`to_dictionary<class_GLTFCamera_method_to_dictionary>` **(** **)** |const|                                                     |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Camera3D<class_Camera3D>`     | :ref:`to_node<class_GLTFCamera_method_to_node>` **(** **)** |const|                                                                 |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+
 
 Property Descriptions
 ---------------------
@@ -42,6 +69,8 @@ Property Descriptions
 | *Getter*  | get_depth_far()      |
 +-----------+----------------------+
 
+The distance to the far culling boundary for this camera relative to its local Z axis, in meters. This maps to GLTF's ``zfar`` property.
+
 ----
 
 .. _class_GLTFCamera_property_depth_near:
@@ -56,19 +85,23 @@ Property Descriptions
 | *Getter*  | get_depth_near()      |
 +-----------+-----------------------+
 
+The distance to the near culling boundary for this camera relative to its local Z axis, in meters. This maps to GLTF's ``znear`` property.
+
 ----
 
-.. _class_GLTFCamera_property_fov_size:
+.. _class_GLTFCamera_property_fov:
 
-- :ref:`float<class_float>` **fov_size**
+- :ref:`float<class_float>` **fov**
 
-+-----------+---------------------+
-| *Default* | ``75.0``            |
-+-----------+---------------------+
-| *Setter*  | set_fov_size(value) |
-+-----------+---------------------+
-| *Getter*  | get_fov_size()      |
-+-----------+---------------------+
++-----------+----------------+
+| *Default* | ``1.309``      |
++-----------+----------------+
+| *Setter*  | set_fov(value) |
++-----------+----------------+
+| *Getter*  | get_fov()      |
++-----------+----------------+
+
+The FOV of the camera. This class and GLTF define the camera FOV in radians, while Godot uses degrees. This maps to GLTF's ``yfov`` property. This value is only used for perspective cameras, when :ref:`perspective<class_GLTFCamera_property_perspective>` is true.
 
 ----
 
@@ -84,6 +117,57 @@ Property Descriptions
 | *Getter*  | get_perspective()      |
 +-----------+------------------------+
 
+Whether or not the camera is in perspective mode. If false, the camera is in orthographic/orthogonal mode. This maps to GLTF's camera ``type`` property. See :ref:`Camera3D.projection<class_Camera3D_property_projection>` and the GLTF spec for more information.
+
+----
+
+.. _class_GLTFCamera_property_size_mag:
+
+- :ref:`float<class_float>` **size_mag**
+
++-----------+---------------------+
+| *Default* | ``0.5``             |
++-----------+---------------------+
+| *Setter*  | set_size_mag(value) |
++-----------+---------------------+
+| *Getter*  | get_size_mag()      |
++-----------+---------------------+
+
+The size of the camera. This class and GLTF define the camera size magnitude as a radius in meters, while Godot defines it as a diameter in meters. This maps to GLTF's ``ymag`` property. This value is only used for orthographic/orthogonal cameras, when :ref:`perspective<class_GLTFCamera_property_perspective>` is false.
+
+Method Descriptions
+-------------------
+
+.. _class_GLTFCamera_method_from_dictionary:
+
+- :ref:`GLTFCamera<class_GLTFCamera>` **from_dictionary** **(** :ref:`Dictionary<class_Dictionary>` dictionary **)** |static|
+
+Creates a new GLTFCamera instance by parsing the given :ref:`Dictionary<class_Dictionary>`.
+
+----
+
+.. _class_GLTFCamera_method_from_node:
+
+- :ref:`GLTFCamera<class_GLTFCamera>` **from_node** **(** :ref:`Camera3D<class_Camera3D>` camera_node **)** |static|
+
+Create a new GLTFCamera instance from the given Godot :ref:`Camera3D<class_Camera3D>` node.
+
+----
+
+.. _class_GLTFCamera_method_to_dictionary:
+
+- :ref:`Dictionary<class_Dictionary>` **to_dictionary** **(** **)** |const|
+
+Serializes this GLTFCamera instance into a :ref:`Dictionary<class_Dictionary>`.
+
+----
+
+.. _class_GLTFCamera_method_to_node:
+
+- :ref:`Camera3D<class_Camera3D>` **to_node** **(** **)** |const|
+
+Converts this GLTFCamera instance into a Godot :ref:`Camera3D<class_Camera3D>` 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.)`

+ 56 - 0
classes/class_gltflight.rst

@@ -12,7 +12,17 @@ GLTFLight
 
 **Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
+Represents a GLTF light.
 
+Description
+-----------
+
+Represents a light as defined by the ``KHR_lights_punctual`` GLTF extension.
+
+Tutorials
+---------
+
+- `KHR_lights_punctual GLTF extension spec <https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_lights_punctual>`__
 
 Properties
 ----------
@@ -31,6 +41,19 @@ Properties
 | :ref:`float<class_float>`   | :ref:`range<class_GLTFLight_property_range>`                       | ``inf``               |
 +-----------------------------+--------------------------------------------------------------------+-----------------------+
 
+Methods
+-------
+
++-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`GLTFLight<class_GLTFLight>`   | :ref:`from_dictionary<class_GLTFLight_method_from_dictionary>` **(** :ref:`Dictionary<class_Dictionary>` dictionary **)** |static| |
++-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`GLTFLight<class_GLTFLight>`   | :ref:`from_node<class_GLTFLight_method_from_node>` **(** :ref:`Light3D<class_Light3D>` light_node **)** |static|                   |
++-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>` | :ref:`to_dictionary<class_GLTFLight_method_to_dictionary>` **(** **)** |const|                                                     |
++-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Light3D<class_Light3D>`       | :ref:`to_node<class_GLTFLight_method_to_node>` **(** **)** |const|                                                                 |
++-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------+
+
 Property Descriptions
 ---------------------
 
@@ -132,6 +155,39 @@ At this angle, the light drops off to zero brightness. Between the inner and out
 
 The range of the light, beyond which the light has no effect. GLTF lights with no range defined behave like physical lights (which have infinite range). When creating a Godot light, the range is clamped to 4096.
 
+Method Descriptions
+-------------------
+
+.. _class_GLTFLight_method_from_dictionary:
+
+- :ref:`GLTFLight<class_GLTFLight>` **from_dictionary** **(** :ref:`Dictionary<class_Dictionary>` dictionary **)** |static|
+
+Creates a new GLTFLight instance by parsing the given :ref:`Dictionary<class_Dictionary>`.
+
+----
+
+.. _class_GLTFLight_method_from_node:
+
+- :ref:`GLTFLight<class_GLTFLight>` **from_node** **(** :ref:`Light3D<class_Light3D>` light_node **)** |static|
+
+Create a new GLTFLight instance from the given Godot :ref:`Light3D<class_Light3D>` node.
+
+----
+
+.. _class_GLTFLight_method_to_dictionary:
+
+- :ref:`Dictionary<class_Dictionary>` **to_dictionary** **(** **)** |const|
+
+Serializes this GLTFLight instance into a :ref:`Dictionary<class_Dictionary>`.
+
+----
+
+.. _class_GLTFLight_method_to_node:
+
+- :ref:`Light3D<class_Light3D>` **to_node** **(** **)** |const|
+
+Converts this GLTFLight instance into a Godot :ref:`Light3D<class_Light3D>` 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.)`

+ 4 - 4
classes/class_gltfskeleton.rst

@@ -35,11 +35,11 @@ Methods
 +-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Skeleton3D<class_Skeleton3D>`             | :ref:`get_godot_skeleton<class_GLTFSkeleton_method_get_godot_skeleton>` **(** **)**                                                       |
 +-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                       | :ref:`get_unique_names<class_GLTFSkeleton_method_get_unique_names>` **(** **)**                                                           |
+| :ref:`String[]<class_String>`                   | :ref:`get_unique_names<class_GLTFSkeleton_method_get_unique_names>` **(** **)**                                                           |
 +-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                            | :ref:`set_godot_bone_node<class_GLTFSkeleton_method_set_godot_bone_node>` **(** :ref:`Dictionary<class_Dictionary>` godot_bone_node **)** |
 +-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`set_unique_names<class_GLTFSkeleton_method_set_unique_names>` **(** :ref:`Array<class_Array>` unique_names **)**                    |
+| void                                            | :ref:`set_unique_names<class_GLTFSkeleton_method_set_unique_names>` **(** :ref:`String[]<class_String>` unique_names **)**                |
 +-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+
 
 Property Descriptions
@@ -100,7 +100,7 @@ Method Descriptions
 
 .. _class_GLTFSkeleton_method_get_unique_names:
 
-- :ref:`Array<class_Array>` **get_unique_names** **(** **)**
+- :ref:`String[]<class_String>` **get_unique_names** **(** **)**
 
 ----
 
@@ -112,7 +112,7 @@ Method Descriptions
 
 .. _class_GLTFSkeleton_method_set_unique_names:
 
-- void **set_unique_names** **(** :ref:`Array<class_Array>` unique_names **)**
+- void **set_unique_names** **(** :ref:`String[]<class_String>` unique_names **)**
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 15 - 15
classes/class_gltfskin.rst

@@ -36,19 +36,19 @@ Properties
 Methods
 -------
 
-+-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`           | :ref:`get_inverse_binds<class_GLTFSkin_method_get_inverse_binds>` **(** **)**                                                               |
-+-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Dictionary<class_Dictionary>` | :ref:`get_joint_i_to_bone_i<class_GLTFSkin_method_get_joint_i_to_bone_i>` **(** **)**                                                       |
-+-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Dictionary<class_Dictionary>` | :ref:`get_joint_i_to_name<class_GLTFSkin_method_get_joint_i_to_name>` **(** **)**                                                           |
-+-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                | :ref:`set_inverse_binds<class_GLTFSkin_method_set_inverse_binds>` **(** :ref:`Array<class_Array>` inverse_binds **)**                       |
-+-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                | :ref:`set_joint_i_to_bone_i<class_GLTFSkin_method_set_joint_i_to_bone_i>` **(** :ref:`Dictionary<class_Dictionary>` joint_i_to_bone_i **)** |
-+-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                | :ref:`set_joint_i_to_name<class_GLTFSkin_method_set_joint_i_to_name>` **(** :ref:`Dictionary<class_Dictionary>` joint_i_to_name **)**       |
-+-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
++-----------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Transform3D[]<class_Transform3D>` | :ref:`get_inverse_binds<class_GLTFSkin_method_get_inverse_binds>` **(** **)**                                                               |
++-----------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>`     | :ref:`get_joint_i_to_bone_i<class_GLTFSkin_method_get_joint_i_to_bone_i>` **(** **)**                                                       |
++-----------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>`     | :ref:`get_joint_i_to_name<class_GLTFSkin_method_get_joint_i_to_name>` **(** **)**                                                           |
++-----------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                    | :ref:`set_inverse_binds<class_GLTFSkin_method_set_inverse_binds>` **(** :ref:`Transform3D[]<class_Transform3D>` inverse_binds **)**         |
++-----------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                    | :ref:`set_joint_i_to_bone_i<class_GLTFSkin_method_set_joint_i_to_bone_i>` **(** :ref:`Dictionary<class_Dictionary>` joint_i_to_bone_i **)** |
++-----------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                    | :ref:`set_joint_i_to_name<class_GLTFSkin_method_set_joint_i_to_name>` **(** :ref:`Dictionary<class_Dictionary>` joint_i_to_name **)**       |
++-----------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
 
 Property Descriptions
 ---------------------
@@ -152,7 +152,7 @@ Method Descriptions
 
 .. _class_GLTFSkin_method_get_inverse_binds:
 
-- :ref:`Array<class_Array>` **get_inverse_binds** **(** **)**
+- :ref:`Transform3D[]<class_Transform3D>` **get_inverse_binds** **(** **)**
 
 ----
 
@@ -170,7 +170,7 @@ Method Descriptions
 
 .. _class_GLTFSkin_method_set_inverse_binds:
 
-- void **set_inverse_binds** **(** :ref:`Array<class_Array>` inverse_binds **)**
+- void **set_inverse_binds** **(** :ref:`Transform3D[]<class_Transform3D>` inverse_binds **)**
 
 ----
 

+ 20 - 0
classes/class_gltfspecgloss.rst

@@ -12,7 +12,17 @@ GLTFSpecGloss
 
 **Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
+Archived GLTF extension for specular/glossy materials.
 
+Description
+-----------
+
+KHR_materials_pbrSpecularGlossiness is an archived GLTF extension. This means that it is deprecated and not recommended for new files. However, it is still supported for loading old files.
+
+Tutorials
+---------
+
+- `KHR_materials_pbrSpecularGlossiness GLTF extension spec <https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Archived/KHR_materials_pbrSpecularGlossiness>`__
 
 Properties
 ----------
@@ -44,6 +54,8 @@ Property Descriptions
 | *Getter*  | get_diffuse_factor()      |
 +-----------+---------------------------+
 
+The reflected diffuse factor of the material.
+
 ----
 
 .. _class_GLTFSpecGloss_property_diffuse_img:
@@ -56,6 +68,8 @@ Property Descriptions
 | *Getter* | get_diffuse_img()      |
 +----------+------------------------+
 
+The diffuse texture.
+
 ----
 
 .. _class_GLTFSpecGloss_property_gloss_factor:
@@ -70,6 +84,8 @@ Property Descriptions
 | *Getter*  | get_gloss_factor()      |
 +-----------+-------------------------+
 
+The glossiness or smoothness of the material.
+
 ----
 
 .. _class_GLTFSpecGloss_property_spec_gloss_img:
@@ -82,6 +98,8 @@ Property Descriptions
 | *Getter* | get_spec_gloss_img()      |
 +----------+---------------------------+
 
+The specular-glossiness texture.
+
 ----
 
 .. _class_GLTFSpecGloss_property_specular_factor:
@@ -96,6 +114,8 @@ Property Descriptions
 | *Getter*  | get_specular_factor()      |
 +-----------+----------------------------+
 
+The specular RGB color of the material. The alpha channel is unused.
+
 .. |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.)`

+ 139 - 123
classes/class_gltfstate.rst

@@ -17,96 +17,98 @@ GLTFState
 Properties
 ----------
 
-+-----------------------------------------------+----------------------------------------------------------------------------+-----------------------+
-| :ref:`String<class_String>`                   | :ref:`base_path<class_GLTFState_property_base_path>`                       | ``""``                |
-+-----------------------------------------------+----------------------------------------------------------------------------+-----------------------+
-| :ref:`Array<class_Array>`                     | :ref:`buffers<class_GLTFState_property_buffers>`                           | ``[]``                |
-+-----------------------------------------------+----------------------------------------------------------------------------+-----------------------+
-| :ref:`PackedByteArray<class_PackedByteArray>` | :ref:`glb_data<class_GLTFState_property_glb_data>`                         | ``PackedByteArray()`` |
-+-----------------------------------------------+----------------------------------------------------------------------------+-----------------------+
-| :ref:`Dictionary<class_Dictionary>`           | :ref:`json<class_GLTFState_property_json>`                                 | ``{}``                |
-+-----------------------------------------------+----------------------------------------------------------------------------+-----------------------+
-| :ref:`int<class_int>`                         | :ref:`major_version<class_GLTFState_property_major_version>`               | ``0``                 |
-+-----------------------------------------------+----------------------------------------------------------------------------+-----------------------+
-| :ref:`int<class_int>`                         | :ref:`minor_version<class_GLTFState_property_minor_version>`               | ``0``                 |
-+-----------------------------------------------+----------------------------------------------------------------------------+-----------------------+
-| :ref:`Array<class_Array>`                     | :ref:`root_nodes<class_GLTFState_property_root_nodes>`                     | ``[]``                |
-+-----------------------------------------------+----------------------------------------------------------------------------+-----------------------+
-| :ref:`String<class_String>`                   | :ref:`scene_name<class_GLTFState_property_scene_name>`                     | ``""``                |
-+-----------------------------------------------+----------------------------------------------------------------------------+-----------------------+
-| :ref:`bool<class_bool>`                       | :ref:`use_named_skin_binds<class_GLTFState_property_use_named_skin_binds>` | ``false``             |
-+-----------------------------------------------+----------------------------------------------------------------------------+-----------------------+
++-------------------------------------------------+----------------------------------------------------------------------------+------------------------+
+| :ref:`String<class_String>`                     | :ref:`base_path<class_GLTFState_property_base_path>`                       | ``""``                 |
++-------------------------------------------------+----------------------------------------------------------------------------+------------------------+
+| :ref:`PackedByteArray[]<class_PackedByteArray>` | :ref:`buffers<class_GLTFState_property_buffers>`                           | ``[]``                 |
++-------------------------------------------------+----------------------------------------------------------------------------+------------------------+
+| :ref:`bool<class_bool>`                         | :ref:`create_animations<class_GLTFState_property_create_animations>`       | ``true``               |
++-------------------------------------------------+----------------------------------------------------------------------------+------------------------+
+| :ref:`PackedByteArray<class_PackedByteArray>`   | :ref:`glb_data<class_GLTFState_property_glb_data>`                         | ``PackedByteArray()``  |
++-------------------------------------------------+----------------------------------------------------------------------------+------------------------+
+| :ref:`Dictionary<class_Dictionary>`             | :ref:`json<class_GLTFState_property_json>`                                 | ``{}``                 |
++-------------------------------------------------+----------------------------------------------------------------------------+------------------------+
+| :ref:`int<class_int>`                           | :ref:`major_version<class_GLTFState_property_major_version>`               | ``0``                  |
++-------------------------------------------------+----------------------------------------------------------------------------+------------------------+
+| :ref:`int<class_int>`                           | :ref:`minor_version<class_GLTFState_property_minor_version>`               | ``0``                  |
++-------------------------------------------------+----------------------------------------------------------------------------+------------------------+
+| :ref:`PackedInt32Array<class_PackedInt32Array>` | :ref:`root_nodes<class_GLTFState_property_root_nodes>`                     | ``PackedInt32Array()`` |
++-------------------------------------------------+----------------------------------------------------------------------------+------------------------+
+| :ref:`String<class_String>`                     | :ref:`scene_name<class_GLTFState_property_scene_name>`                     | ``""``                 |
++-------------------------------------------------+----------------------------------------------------------------------------+------------------------+
+| :ref:`bool<class_bool>`                         | :ref:`use_named_skin_binds<class_GLTFState_property_use_named_skin_binds>` | ``false``              |
++-------------------------------------------------+----------------------------------------------------------------------------+------------------------+
 
 Methods
 -------
 
-+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                     | :ref:`get_accessors<class_GLTFState_method_get_accessors>` **(** **)**                                                                            |
-+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`AnimationPlayer<class_AnimationPlayer>` | :ref:`get_animation_player<class_GLTFState_method_get_animation_player>` **(** :ref:`int<class_int>` idx **)**                                    |
-+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                         | :ref:`get_animation_players_count<class_GLTFState_method_get_animation_players_count>` **(** :ref:`int<class_int>` idx **)**                      |
-+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                     | :ref:`get_animations<class_GLTFState_method_get_animations>` **(** **)**                                                                          |
-+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                     | :ref:`get_buffer_views<class_GLTFState_method_get_buffer_views>` **(** **)**                                                                      |
-+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                     | :ref:`get_cameras<class_GLTFState_method_get_cameras>` **(** **)**                                                                                |
-+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                     | :ref:`get_images<class_GLTFState_method_get_images>` **(** **)**                                                                                  |
-+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                     | :ref:`get_lights<class_GLTFState_method_get_lights>` **(** **)**                                                                                  |
-+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                     | :ref:`get_materials<class_GLTFState_method_get_materials>` **(** **)**                                                                            |
-+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                     | :ref:`get_meshes<class_GLTFState_method_get_meshes>` **(** **)**                                                                                  |
-+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                     | :ref:`get_nodes<class_GLTFState_method_get_nodes>` **(** **)**                                                                                    |
-+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Node<class_Node>`                       | :ref:`get_scene_node<class_GLTFState_method_get_scene_node>` **(** :ref:`int<class_int>` idx **)**                                                |
-+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Dictionary<class_Dictionary>`           | :ref:`get_skeleton_to_node<class_GLTFState_method_get_skeleton_to_node>` **(** **)**                                                              |
-+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                     | :ref:`get_skeletons<class_GLTFState_method_get_skeletons>` **(** **)**                                                                            |
-+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                     | :ref:`get_skins<class_GLTFState_method_get_skins>` **(** **)**                                                                                    |
-+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                     | :ref:`get_textures<class_GLTFState_method_get_textures>` **(** **)**                                                                              |
-+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                     | :ref:`get_unique_animation_names<class_GLTFState_method_get_unique_animation_names>` **(** **)**                                                  |
-+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                     | :ref:`get_unique_names<class_GLTFState_method_get_unique_names>` **(** **)**                                                                      |
-+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                          | :ref:`set_accessors<class_GLTFState_method_set_accessors>` **(** :ref:`Array<class_Array>` accessors **)**                                        |
-+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                          | :ref:`set_animations<class_GLTFState_method_set_animations>` **(** :ref:`Array<class_Array>` animations **)**                                     |
-+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                          | :ref:`set_buffer_views<class_GLTFState_method_set_buffer_views>` **(** :ref:`Array<class_Array>` buffer_views **)**                               |
-+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                          | :ref:`set_cameras<class_GLTFState_method_set_cameras>` **(** :ref:`Array<class_Array>` cameras **)**                                              |
-+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                          | :ref:`set_images<class_GLTFState_method_set_images>` **(** :ref:`Array<class_Array>` images **)**                                                 |
-+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                          | :ref:`set_lights<class_GLTFState_method_set_lights>` **(** :ref:`Array<class_Array>` lights **)**                                                 |
-+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                          | :ref:`set_materials<class_GLTFState_method_set_materials>` **(** :ref:`Array<class_Array>` materials **)**                                        |
-+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                          | :ref:`set_meshes<class_GLTFState_method_set_meshes>` **(** :ref:`Array<class_Array>` meshes **)**                                                 |
-+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                          | :ref:`set_nodes<class_GLTFState_method_set_nodes>` **(** :ref:`Array<class_Array>` nodes **)**                                                    |
-+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                          | :ref:`set_skeleton_to_node<class_GLTFState_method_set_skeleton_to_node>` **(** :ref:`Dictionary<class_Dictionary>` skeleton_to_node **)**         |
-+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                          | :ref:`set_skeletons<class_GLTFState_method_set_skeletons>` **(** :ref:`Array<class_Array>` skeletons **)**                                        |
-+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                          | :ref:`set_skins<class_GLTFState_method_set_skins>` **(** :ref:`Array<class_Array>` skins **)**                                                    |
-+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                          | :ref:`set_textures<class_GLTFState_method_set_textures>` **(** :ref:`Array<class_Array>` textures **)**                                           |
-+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                          | :ref:`set_unique_animation_names<class_GLTFState_method_set_unique_animation_names>` **(** :ref:`Array<class_Array>` unique_animation_names **)** |
-+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                          | :ref:`set_unique_names<class_GLTFState_method_set_unique_names>` **(** :ref:`Array<class_Array>` unique_names **)**                               |
-+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`GLTFAccessor[]<class_GLTFAccessor>`     | :ref:`get_accessors<class_GLTFState_method_get_accessors>` **(** **)**                                                                                |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`AnimationPlayer<class_AnimationPlayer>` | :ref:`get_animation_player<class_GLTFState_method_get_animation_player>` **(** :ref:`int<class_int>` idx **)**                                        |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                         | :ref:`get_animation_players_count<class_GLTFState_method_get_animation_players_count>` **(** :ref:`int<class_int>` idx **)**                          |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`GLTFAnimation[]<class_GLTFAnimation>`   | :ref:`get_animations<class_GLTFState_method_get_animations>` **(** **)**                                                                              |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`GLTFBufferView[]<class_GLTFBufferView>` | :ref:`get_buffer_views<class_GLTFState_method_get_buffer_views>` **(** **)**                                                                          |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`GLTFCamera[]<class_GLTFCamera>`         | :ref:`get_cameras<class_GLTFState_method_get_cameras>` **(** **)**                                                                                    |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Texture2D[]<class_Texture2D>`           | :ref:`get_images<class_GLTFState_method_get_images>` **(** **)**                                                                                      |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`GLTFLight[]<class_GLTFLight>`           | :ref:`get_lights<class_GLTFState_method_get_lights>` **(** **)**                                                                                      |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`BaseMaterial3D[]<class_BaseMaterial3D>` | :ref:`get_materials<class_GLTFState_method_get_materials>` **(** **)**                                                                                |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`GLTFMesh[]<class_GLTFMesh>`             | :ref:`get_meshes<class_GLTFState_method_get_meshes>` **(** **)**                                                                                      |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`GLTFNode[]<class_GLTFNode>`             | :ref:`get_nodes<class_GLTFState_method_get_nodes>` **(** **)**                                                                                        |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Node<class_Node>`                       | :ref:`get_scene_node<class_GLTFState_method_get_scene_node>` **(** :ref:`int<class_int>` idx **)**                                                    |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>`           | :ref:`get_skeleton_to_node<class_GLTFState_method_get_skeleton_to_node>` **(** **)**                                                                  |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`GLTFSkeleton[]<class_GLTFSkeleton>`     | :ref:`get_skeletons<class_GLTFState_method_get_skeletons>` **(** **)**                                                                                |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`GLTFSkin[]<class_GLTFSkin>`             | :ref:`get_skins<class_GLTFState_method_get_skins>` **(** **)**                                                                                        |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`GLTFTexture[]<class_GLTFTexture>`       | :ref:`get_textures<class_GLTFState_method_get_textures>` **(** **)**                                                                                  |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String[]<class_String>`                 | :ref:`get_unique_animation_names<class_GLTFState_method_get_unique_animation_names>` **(** **)**                                                      |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String[]<class_String>`                 | :ref:`get_unique_names<class_GLTFState_method_get_unique_names>` **(** **)**                                                                          |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`set_accessors<class_GLTFState_method_set_accessors>` **(** :ref:`GLTFAccessor[]<class_GLTFAccessor>` accessors **)**                            |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`set_animations<class_GLTFState_method_set_animations>` **(** :ref:`GLTFAnimation[]<class_GLTFAnimation>` animations **)**                       |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`set_buffer_views<class_GLTFState_method_set_buffer_views>` **(** :ref:`GLTFBufferView[]<class_GLTFBufferView>` buffer_views **)**               |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`set_cameras<class_GLTFState_method_set_cameras>` **(** :ref:`GLTFCamera[]<class_GLTFCamera>` cameras **)**                                      |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`set_images<class_GLTFState_method_set_images>` **(** :ref:`Texture2D[]<class_Texture2D>` images **)**                                           |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`set_lights<class_GLTFState_method_set_lights>` **(** :ref:`GLTFLight[]<class_GLTFLight>` lights **)**                                           |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`set_materials<class_GLTFState_method_set_materials>` **(** :ref:`BaseMaterial3D[]<class_BaseMaterial3D>` materials **)**                        |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`set_meshes<class_GLTFState_method_set_meshes>` **(** :ref:`GLTFMesh[]<class_GLTFMesh>` meshes **)**                                             |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`set_nodes<class_GLTFState_method_set_nodes>` **(** :ref:`GLTFNode[]<class_GLTFNode>` nodes **)**                                                |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`set_skeleton_to_node<class_GLTFState_method_set_skeleton_to_node>` **(** :ref:`Dictionary<class_Dictionary>` skeleton_to_node **)**             |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`set_skeletons<class_GLTFState_method_set_skeletons>` **(** :ref:`GLTFSkeleton[]<class_GLTFSkeleton>` skeletons **)**                            |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`set_skins<class_GLTFState_method_set_skins>` **(** :ref:`GLTFSkin[]<class_GLTFSkin>` skins **)**                                                |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`set_textures<class_GLTFState_method_set_textures>` **(** :ref:`GLTFTexture[]<class_GLTFTexture>` textures **)**                                 |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`set_unique_animation_names<class_GLTFState_method_set_unique_animation_names>` **(** :ref:`String[]<class_String>` unique_animation_names **)** |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`set_unique_names<class_GLTFState_method_set_unique_names>` **(** :ref:`String[]<class_String>` unique_names **)**                               |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Property Descriptions
 ---------------------
@@ -127,7 +129,7 @@ Property Descriptions
 
 .. _class_GLTFState_property_buffers:
 
-- :ref:`Array<class_Array>` **buffers**
+- :ref:`PackedByteArray[]<class_PackedByteArray>` **buffers**
 
 +-----------+--------------------+
 | *Default* | ``[]``             |
@@ -139,6 +141,20 @@ Property Descriptions
 
 ----
 
+.. _class_GLTFState_property_create_animations:
+
+- :ref:`bool<class_bool>` **create_animations**
+
++-----------+------------------------------+
+| *Default* | ``true``                     |
++-----------+------------------------------+
+| *Setter*  | set_create_animations(value) |
++-----------+------------------------------+
+| *Getter*  | get_create_animations()      |
++-----------+------------------------------+
+
+----
+
 .. _class_GLTFState_property_glb_data:
 
 - :ref:`PackedByteArray<class_PackedByteArray>` **glb_data**
@@ -197,15 +213,15 @@ Property Descriptions
 
 .. _class_GLTFState_property_root_nodes:
 
-- :ref:`Array<class_Array>` **root_nodes**
+- :ref:`PackedInt32Array<class_PackedInt32Array>` **root_nodes**
 
-+-----------+-----------------------+
-| *Default* | ``[]``                |
-+-----------+-----------------------+
-| *Setter*  | set_root_nodes(value) |
-+-----------+-----------------------+
-| *Getter*  | get_root_nodes()      |
-+-----------+-----------------------+
++-----------+------------------------+
+| *Default* | ``PackedInt32Array()`` |
++-----------+------------------------+
+| *Setter*  | set_root_nodes(value)  |
++-----------+------------------------+
+| *Getter*  | get_root_nodes()       |
++-----------+------------------------+
 
 ----
 
@@ -240,7 +256,7 @@ Method Descriptions
 
 .. _class_GLTFState_method_get_accessors:
 
-- :ref:`Array<class_Array>` **get_accessors** **(** **)**
+- :ref:`GLTFAccessor[]<class_GLTFAccessor>` **get_accessors** **(** **)**
 
 ----
 
@@ -258,49 +274,49 @@ Method Descriptions
 
 .. _class_GLTFState_method_get_animations:
 
-- :ref:`Array<class_Array>` **get_animations** **(** **)**
+- :ref:`GLTFAnimation[]<class_GLTFAnimation>` **get_animations** **(** **)**
 
 ----
 
 .. _class_GLTFState_method_get_buffer_views:
 
-- :ref:`Array<class_Array>` **get_buffer_views** **(** **)**
+- :ref:`GLTFBufferView[]<class_GLTFBufferView>` **get_buffer_views** **(** **)**
 
 ----
 
 .. _class_GLTFState_method_get_cameras:
 
-- :ref:`Array<class_Array>` **get_cameras** **(** **)**
+- :ref:`GLTFCamera[]<class_GLTFCamera>` **get_cameras** **(** **)**
 
 ----
 
 .. _class_GLTFState_method_get_images:
 
-- :ref:`Array<class_Array>` **get_images** **(** **)**
+- :ref:`Texture2D[]<class_Texture2D>` **get_images** **(** **)**
 
 ----
 
 .. _class_GLTFState_method_get_lights:
 
-- :ref:`Array<class_Array>` **get_lights** **(** **)**
+- :ref:`GLTFLight[]<class_GLTFLight>` **get_lights** **(** **)**
 
 ----
 
 .. _class_GLTFState_method_get_materials:
 
-- :ref:`Array<class_Array>` **get_materials** **(** **)**
+- :ref:`BaseMaterial3D[]<class_BaseMaterial3D>` **get_materials** **(** **)**
 
 ----
 
 .. _class_GLTFState_method_get_meshes:
 
-- :ref:`Array<class_Array>` **get_meshes** **(** **)**
+- :ref:`GLTFMesh[]<class_GLTFMesh>` **get_meshes** **(** **)**
 
 ----
 
 .. _class_GLTFState_method_get_nodes:
 
-- :ref:`Array<class_Array>` **get_nodes** **(** **)**
+- :ref:`GLTFNode[]<class_GLTFNode>` **get_nodes** **(** **)**
 
 ----
 
@@ -318,85 +334,85 @@ Method Descriptions
 
 .. _class_GLTFState_method_get_skeletons:
 
-- :ref:`Array<class_Array>` **get_skeletons** **(** **)**
+- :ref:`GLTFSkeleton[]<class_GLTFSkeleton>` **get_skeletons** **(** **)**
 
 ----
 
 .. _class_GLTFState_method_get_skins:
 
-- :ref:`Array<class_Array>` **get_skins** **(** **)**
+- :ref:`GLTFSkin[]<class_GLTFSkin>` **get_skins** **(** **)**
 
 ----
 
 .. _class_GLTFState_method_get_textures:
 
-- :ref:`Array<class_Array>` **get_textures** **(** **)**
+- :ref:`GLTFTexture[]<class_GLTFTexture>` **get_textures** **(** **)**
 
 ----
 
 .. _class_GLTFState_method_get_unique_animation_names:
 
-- :ref:`Array<class_Array>` **get_unique_animation_names** **(** **)**
+- :ref:`String[]<class_String>` **get_unique_animation_names** **(** **)**
 
 ----
 
 .. _class_GLTFState_method_get_unique_names:
 
-- :ref:`Array<class_Array>` **get_unique_names** **(** **)**
+- :ref:`String[]<class_String>` **get_unique_names** **(** **)**
 
 ----
 
 .. _class_GLTFState_method_set_accessors:
 
-- void **set_accessors** **(** :ref:`Array<class_Array>` accessors **)**
+- void **set_accessors** **(** :ref:`GLTFAccessor[]<class_GLTFAccessor>` accessors **)**
 
 ----
 
 .. _class_GLTFState_method_set_animations:
 
-- void **set_animations** **(** :ref:`Array<class_Array>` animations **)**
+- void **set_animations** **(** :ref:`GLTFAnimation[]<class_GLTFAnimation>` animations **)**
 
 ----
 
 .. _class_GLTFState_method_set_buffer_views:
 
-- void **set_buffer_views** **(** :ref:`Array<class_Array>` buffer_views **)**
+- void **set_buffer_views** **(** :ref:`GLTFBufferView[]<class_GLTFBufferView>` buffer_views **)**
 
 ----
 
 .. _class_GLTFState_method_set_cameras:
 
-- void **set_cameras** **(** :ref:`Array<class_Array>` cameras **)**
+- void **set_cameras** **(** :ref:`GLTFCamera[]<class_GLTFCamera>` cameras **)**
 
 ----
 
 .. _class_GLTFState_method_set_images:
 
-- void **set_images** **(** :ref:`Array<class_Array>` images **)**
+- void **set_images** **(** :ref:`Texture2D[]<class_Texture2D>` images **)**
 
 ----
 
 .. _class_GLTFState_method_set_lights:
 
-- void **set_lights** **(** :ref:`Array<class_Array>` lights **)**
+- void **set_lights** **(** :ref:`GLTFLight[]<class_GLTFLight>` lights **)**
 
 ----
 
 .. _class_GLTFState_method_set_materials:
 
-- void **set_materials** **(** :ref:`Array<class_Array>` materials **)**
+- void **set_materials** **(** :ref:`BaseMaterial3D[]<class_BaseMaterial3D>` materials **)**
 
 ----
 
 .. _class_GLTFState_method_set_meshes:
 
-- void **set_meshes** **(** :ref:`Array<class_Array>` meshes **)**
+- void **set_meshes** **(** :ref:`GLTFMesh[]<class_GLTFMesh>` meshes **)**
 
 ----
 
 .. _class_GLTFState_method_set_nodes:
 
-- void **set_nodes** **(** :ref:`Array<class_Array>` nodes **)**
+- void **set_nodes** **(** :ref:`GLTFNode[]<class_GLTFNode>` nodes **)**
 
 ----
 
@@ -408,31 +424,31 @@ Method Descriptions
 
 .. _class_GLTFState_method_set_skeletons:
 
-- void **set_skeletons** **(** :ref:`Array<class_Array>` skeletons **)**
+- void **set_skeletons** **(** :ref:`GLTFSkeleton[]<class_GLTFSkeleton>` skeletons **)**
 
 ----
 
 .. _class_GLTFState_method_set_skins:
 
-- void **set_skins** **(** :ref:`Array<class_Array>` skins **)**
+- void **set_skins** **(** :ref:`GLTFSkin[]<class_GLTFSkin>` skins **)**
 
 ----
 
 .. _class_GLTFState_method_set_textures:
 
-- void **set_textures** **(** :ref:`Array<class_Array>` textures **)**
+- void **set_textures** **(** :ref:`GLTFTexture[]<class_GLTFTexture>` textures **)**
 
 ----
 
 .. _class_GLTFState_method_set_unique_animation_names:
 
-- void **set_unique_animation_names** **(** :ref:`Array<class_Array>` unique_animation_names **)**
+- void **set_unique_animation_names** **(** :ref:`String[]<class_String>` unique_animation_names **)**
 
 ----
 
 .. _class_GLTFState_method_set_unique_names:
 
-- void **set_unique_names** **(** :ref:`Array<class_Array>` unique_names **)**
+- void **set_unique_names** **(** :ref:`String[]<class_String>` unique_names **)**
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 4 - 78
classes/class_godotsharp.rst

@@ -24,92 +24,18 @@ See also :ref:`CSharpScript<class_CSharpScript>`.
 Methods
 -------
 
-+-------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
-| void                    | :ref:`attach_thread<class_GodotSharp_method_attach_thread>` **(** **)**                                                                     |
-+-------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
-| void                    | :ref:`detach_thread<class_GodotSharp_method_detach_thread>` **(** **)**                                                                     |
-+-------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`   | :ref:`get_domain_id<class_GodotSharp_method_get_domain_id>` **(** **)**                                                                     |
-+-------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`   | :ref:`get_scripts_domain_id<class_GodotSharp_method_get_scripts_domain_id>` **(** **)**                                                     |
-+-------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>` | :ref:`is_domain_finalizing_for_unload<class_GodotSharp_method_is_domain_finalizing_for_unload>` **(** :ref:`int<class_int>` domain_id **)** |
-+-------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>` | :ref:`is_runtime_initialized<class_GodotSharp_method_is_runtime_initialized>` **(** **)**                                                   |
-+-------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>` | :ref:`is_runtime_shutting_down<class_GodotSharp_method_is_runtime_shutting_down>` **(** **)**                                               |
-+-------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>` | :ref:`is_scripts_domain_loaded<class_GodotSharp_method_is_scripts_domain_loaded>` **(** **)**                                               |
-+-------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
++-------------------------+-------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>` | :ref:`is_runtime_initialized<class_GodotSharp_method_is_runtime_initialized>` **(** **)** |
++-------------------------+-------------------------------------------------------------------------------------------+
 
 Method Descriptions
 -------------------
 
-.. _class_GodotSharp_method_attach_thread:
-
-- void **attach_thread** **(** **)**
-
-Attaches the current thread to the Mono runtime.
-
-----
-
-.. _class_GodotSharp_method_detach_thread:
-
-- void **detach_thread** **(** **)**
-
-Detaches the current thread from the Mono runtime.
-
-----
-
-.. _class_GodotSharp_method_get_domain_id:
-
-- :ref:`int<class_int>` **get_domain_id** **(** **)**
-
-Returns the current MonoDomain ID.
-
-\ **Note:** The Mono runtime must be initialized for this method to work (use :ref:`is_runtime_initialized<class_GodotSharp_method_is_runtime_initialized>` to check). If the Mono runtime isn't initialized at the time this method is called, the engine will crash.
-
-----
-
-.. _class_GodotSharp_method_get_scripts_domain_id:
-
-- :ref:`int<class_int>` **get_scripts_domain_id** **(** **)**
-
-Returns the scripts MonoDomain's ID. This will be the same MonoDomain ID as :ref:`get_domain_id<class_GodotSharp_method_get_domain_id>`, unless the scripts domain isn't loaded.
-
-\ **Note:** The Mono runtime must be initialized for this method to work (use :ref:`is_runtime_initialized<class_GodotSharp_method_is_runtime_initialized>` to check). If the Mono runtime isn't initialized at the time this method is called, the engine will crash.
-
-----
-
-.. _class_GodotSharp_method_is_domain_finalizing_for_unload:
-
-- :ref:`bool<class_bool>` **is_domain_finalizing_for_unload** **(** :ref:`int<class_int>` domain_id **)**
-
-Returns ``true`` if the domain is being finalized, ``false`` otherwise.
-
-----
-
 .. _class_GodotSharp_method_is_runtime_initialized:
 
 - :ref:`bool<class_bool>` **is_runtime_initialized** **(** **)**
 
-Returns ``true`` if the Mono runtime is initialized, ``false`` otherwise.
-
-----
-
-.. _class_GodotSharp_method_is_runtime_shutting_down:
-
-- :ref:`bool<class_bool>` **is_runtime_shutting_down** **(** **)**
-
-Returns ``true`` if the Mono runtime is shutting down, ``false`` otherwise.
-
-----
-
-.. _class_GodotSharp_method_is_scripts_domain_loaded:
-
-- :ref:`bool<class_bool>` **is_scripts_domain_loaded** **(** **)**
-
-Returns ``true`` if the scripts domain is loaded, ``false`` otherwise.
+Returns ``true`` if the .NET runtime is initialized, ``false`` otherwise.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 5 - 5
classes/class_gpuparticles2d.rst

@@ -19,7 +19,7 @@ Description
 
 2D particle node used to create a variety of particle systems and effects. ``GPUParticles2D`` features an emitter that generates some number of particles at a given rate.
 
-Use the ``process_material`` property to add a :ref:`ParticlesMaterial<class_ParticlesMaterial>` to configure particle appearance and behavior. Alternatively, you can add a :ref:`ShaderMaterial<class_ShaderMaterial>` which will be applied to all particles.
+Use the ``process_material`` property to add a :ref:`ParticleProcessMaterial<class_ParticleProcessMaterial>` to configure particle appearance and behavior. Alternatively, you can add a :ref:`ShaderMaterial<class_ShaderMaterial>` which will be applied to all particles.
 
 Tutorials
 ---------
@@ -50,7 +50,7 @@ Properties
 +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
 | :ref:`float<class_float>`                       | :ref:`lifetime<class_GPUParticles2D_property_lifetime>`                                     | ``1.0``                         |
 +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
-| :ref:`bool<class_bool>`                         | :ref:`local_coords<class_GPUParticles2D_property_local_coords>`                             | ``true``                        |
+| :ref:`bool<class_bool>`                         | :ref:`local_coords<class_GPUParticles2D_property_local_coords>`                             | ``false``                       |
 +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
 | :ref:`bool<class_bool>`                         | :ref:`one_shot<class_GPUParticles2D_property_one_shot>`                                     | ``false``                       |
 +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
@@ -283,14 +283,14 @@ Amount of time each particle will exist.
 - :ref:`bool<class_bool>` **local_coords**
 
 +-----------+----------------------------------+
-| *Default* | ``true``                         |
+| *Default* | ``false``                        |
 +-----------+----------------------------------+
 | *Setter*  | set_use_local_coordinates(value) |
 +-----------+----------------------------------+
 | *Getter*  | get_use_local_coordinates()      |
 +-----------+----------------------------------+
 
-If ``true``, particles use the parent node's coordinate space. If ``false``, they use global coordinates.
+If ``true``, particles use the parent node's coordinate space (known as local coordinates). This will cause particles to move and rotate along the ``GPUParticles2D`` node (and its parents) when it is moved or rotated. If ``false``, particles use global coordinates; they will not move or rotate along the ``GPUParticles2D`` node (and its parents) when it is moved or rotated.
 
 ----
 
@@ -336,7 +336,7 @@ Particle system starts as if it had already run for this many seconds.
 | *Getter* | get_process_material()      |
 +----------+-----------------------------+
 
-:ref:`Material<class_Material>` for processing particles. Can be a :ref:`ParticlesMaterial<class_ParticlesMaterial>` or a :ref:`ShaderMaterial<class_ShaderMaterial>`.
+:ref:`Material<class_Material>` for processing particles. Can be a :ref:`ParticleProcessMaterial<class_ParticleProcessMaterial>` or a :ref:`ShaderMaterial<class_ShaderMaterial>`.
 
 ----
 

Някои файлове не бяха показани, защото твърде много файлове са промени