Browse Source

classref: Sync with current master branch (6118592)

Godot Organization 1 year ago
parent
commit
b41817daaf
38 changed files with 684 additions and 590 deletions
  1. 8 8
      classes/class_animation.rst
  2. 1 1
      classes/class_animationnode.rst
  3. 1 1
      classes/class_animationnodesync.rst
  4. 2 0
      classes/class_canvasitem.rst
  5. 28 0
      classes/class_classdb.rst
  6. 18 4
      classes/class_fileaccess.rst
  7. 16 0
      classes/class_meshinstance3d.rst
  8. 55 27
      classes/class_navigationmeshsourcegeometrydata2d.rst
  9. 14 0
      classes/class_navigationmeshsourcegeometrydata3d.rst
  10. 14 0
      classes/class_node.rst
  11. 7 7
      classes/class_openxrinterface.rst
  12. 5 5
      classes/class_os.rst
  13. 2 0
      classes/class_particleprocessmaterial.rst
  14. 20 4
      classes/class_projectsettings.rst
  15. 0 0
      classes/class_refcounted.rst
  16. 4 4
      classes/class_renderingserver.rst
  17. 12 0
      classes/class_scripteditorbase.rst
  18. 15 1
      classes/class_surfacetool.rst
  19. 30 0
      classes/class_tabbar.rst
  20. 58 0
      classes/class_tabcontainer.rst
  21. 2 2
      classes/class_textserver.rst
  22. 2 2
      classes/class_textserverextension.rst
  23. 22 22
      classes/class_tilemaplayer.rst
  24. 4 4
      classes/class_tree.rst
  25. 3 3
      classes/class_webxrinterface.rst
  26. 8 0
      classes/class_workerthreadpool.rst
  27. 10 29
      classes/class_xrbodymodifier3d.rst
  28. 8 6
      classes/class_xrbodytracker.rst
  29. 54 0
      classes/class_xrcontrollertracker.rst
  30. 6 6
      classes/class_xrfacemodifier3d.rst
  31. 6 4
      classes/class_xrfacetracker.rst
  32. 8 8
      classes/class_xrhandmodifier3d.rst
  33. 10 59
      classes/class_xrhandtracker.rst
  34. 24 5
      classes/class_xrnode3d.rst
  35. 21 68
      classes/class_xrpositionaltracker.rst
  36. 58 310
      classes/class_xrserver.rst
  37. 126 0
      classes/class_xrtracker.rst
  38. 2 0
      classes/index.rst

+ 8 - 8
classes/class_animation.rst

@@ -67,13 +67,13 @@ Properties
 .. table::
    :widths: auto
 
-   +------------------------------------------+------------------------------------------------------+---------+
-   | :ref:`float<class_float>`                | :ref:`length<class_Animation_property_length>`       | ``1.0`` |
-   +------------------------------------------+------------------------------------------------------+---------+
-   | :ref:`LoopMode<enum_Animation_LoopMode>` | :ref:`loop_mode<class_Animation_property_loop_mode>` | ``0``   |
-   +------------------------------------------+------------------------------------------------------+---------+
-   | :ref:`float<class_float>`                | :ref:`step<class_Animation_property_step>`           | ``0.1`` |
-   +------------------------------------------+------------------------------------------------------+---------+
+   +------------------------------------------+------------------------------------------------------+---------------+
+   | :ref:`float<class_float>`                | :ref:`length<class_Animation_property_length>`       | ``1.0``       |
+   +------------------------------------------+------------------------------------------------------+---------------+
+   | :ref:`LoopMode<enum_Animation_LoopMode>` | :ref:`loop_mode<class_Animation_property_loop_mode>` | ``0``         |
+   +------------------------------------------+------------------------------------------------------+---------------+
+   | :ref:`float<class_float>`                | :ref:`step<class_Animation_property_step>`           | ``0.0333333`` |
+   +------------------------------------------+------------------------------------------------------+---------------+
 
 .. rst-class:: classref-reftable-group
 
@@ -545,7 +545,7 @@ Determines the behavior of both ends of the animation timeline during animation
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **step** = ``0.1``
+:ref:`float<class_float>` **step** = ``0.0333333``
 
 .. rst-class:: classref-property-setget
 

+ 1 - 1
classes/class_animationnode.rst

@@ -27,7 +27,7 @@ Inherit this when creating animation nodes mainly for use in :ref:`AnimationNode
 
 You can access the time information as read-only parameter which is processed and stored in the previous frame for all nodes except :ref:`AnimationNodeOutput<class_AnimationNodeOutput>`.
 
-\ **Note:** If more than two inputs exist in the **AnimationNode**, which time information takes precedence depends on the type of **AnimationNode**.
+\ **Note:** If multiple inputs exist in the **AnimationNode**, which time information takes precedence depends on the type of **AnimationNode**.
 
 ::
 

+ 1 - 1
classes/class_animationnodesync.rst

@@ -14,7 +14,7 @@ AnimationNodeSync
 
 **Inherited By:** :ref:`AnimationNodeAdd2<class_AnimationNodeAdd2>`, :ref:`AnimationNodeAdd3<class_AnimationNodeAdd3>`, :ref:`AnimationNodeBlend2<class_AnimationNodeBlend2>`, :ref:`AnimationNodeBlend3<class_AnimationNodeBlend3>`, :ref:`AnimationNodeOneShot<class_AnimationNodeOneShot>`, :ref:`AnimationNodeSub2<class_AnimationNodeSub2>`, :ref:`AnimationNodeTransition<class_AnimationNodeTransition>`
 
-Base class for :ref:`AnimationNode<class_AnimationNode>`\ s with more than two input ports that must be synchronized.
+Base class for :ref:`AnimationNode<class_AnimationNode>`\ s with multiple input ports that must be synchronized.
 
 .. rst-class:: classref-introduction-group
 

+ 2 - 0
classes/class_canvasitem.rst

@@ -29,6 +29,8 @@ Canvas items are drawn in tree order on their canvas layer. By default, children
 
 A **CanvasItem** can be hidden, which will also hide its children. By adjusting various other properties of a **CanvasItem**, you can also modulate its color (via :ref:`modulate<class_CanvasItem_property_modulate>` or :ref:`self_modulate<class_CanvasItem_property_self_modulate>`), change its Z-index, blend mode, and more.
 
+Note that properties like transform, modulation, and visibility are only propagated to *direct* **CanvasItem** child nodes. If there is a non-**CanvasItem** node in between, like :ref:`Node<class_Node>` or :ref:`AnimationPlayer<class_AnimationPlayer>`, the **CanvasItem** nodes below will have an independent position and :ref:`modulate<class_CanvasItem_property_modulate>` chain. See also :ref:`top_level<class_CanvasItem_property_top_level>`.
+
 .. rst-class:: classref-introduction-group
 
 Tutorials

+ 28 - 0
classes/class_classdb.rst

@@ -50,6 +50,8 @@ Methods
    +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`Variant<class_Variant>`                                    | :ref:`class_get_property<class_ClassDB_method_class_get_property>`\ (\ object\: :ref:`Object<class_Object>`, property\: :ref:`StringName<class_StringName>`\ ) |const|                                                                                  |
    +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`Variant<class_Variant>`                                    | :ref:`class_get_property_default_value<class_ClassDB_method_class_get_property_default_value>`\ (\ class\: :ref:`StringName<class_StringName>`, property\: :ref:`StringName<class_StringName>`\ ) |const|                                               |
+   +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`Array<class_Array>`\[:ref:`Dictionary<class_Dictionary>`\] | :ref:`class_get_property_list<class_ClassDB_method_class_get_property_list>`\ (\ class\: :ref:`StringName<class_StringName>`, no_inheritance\: :ref:`bool<class_bool>` = false\ ) |const|                                                               |
    +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`Dictionary<class_Dictionary>`                              | :ref:`class_get_signal<class_ClassDB_method_class_get_signal>`\ (\ class\: :ref:`StringName<class_StringName>`, signal\: :ref:`StringName<class_StringName>`\ ) |const|                                                                                 |
@@ -76,6 +78,8 @@ Methods
    +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`bool<class_bool>`                                          | :ref:`is_class_enabled<class_ClassDB_method_is_class_enabled>`\ (\ class\: :ref:`StringName<class_StringName>`\ ) |const|                                                                                                                               |
    +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                                          | :ref:`is_class_enum_bitfield<class_ClassDB_method_is_class_enum_bitfield>`\ (\ class\: :ref:`StringName<class_StringName>`, enum\: :ref:`StringName<class_StringName>`, no_inheritance\: :ref:`bool<class_bool>` = false\ ) |const|                     |
+   +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`bool<class_bool>`                                          | :ref:`is_parent_class<class_ClassDB_method_is_parent_class>`\ (\ class\: :ref:`StringName<class_StringName>`, inherits\: :ref:`StringName<class_StringName>`\ ) |const|                                                                                 |
    +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
@@ -210,6 +214,18 @@ Returns the value of ``property`` of ``object`` or its ancestry.
 
 ----
 
+.. _class_ClassDB_method_class_get_property_default_value:
+
+.. rst-class:: classref-method
+
+:ref:`Variant<class_Variant>` **class_get_property_default_value**\ (\ class\: :ref:`StringName<class_StringName>`, property\: :ref:`StringName<class_StringName>`\ ) |const|
+
+Returns the default value of ``property`` of ``class`` or its ancestor classes.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_ClassDB_method_class_get_property_list:
 
 .. rst-class:: classref-method
@@ -366,6 +382,18 @@ Returns whether this ``class`` is enabled or not.
 
 ----
 
+.. _class_ClassDB_method_is_class_enum_bitfield:
+
+.. rst-class:: classref-method
+
+:ref:`bool<class_bool>` **is_class_enum_bitfield**\ (\ class\: :ref:`StringName<class_StringName>`, enum\: :ref:`StringName<class_StringName>`, no_inheritance\: :ref:`bool<class_bool>` = false\ ) |const|
+
+Returns whether ``class`` (or its ancestor classes if ``no_inheritance`` is ``false``) has an enum called ``enum`` that is a bitfield.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_ClassDB_method_is_parent_class:
 
 .. rst-class:: classref-method

+ 18 - 4
classes/class_fileaccess.rst

@@ -28,24 +28,24 @@ Here's a sample on how to write and read from a file:
 
  .. code-tab:: gdscript
 
-    func save(content):
+    func save_to_file(content):
         var file = FileAccess.open("user://save_game.dat", FileAccess.WRITE)
         file.store_string(content)
     
-    func load():
+    func load_from_file():
         var file = FileAccess.open("user://save_game.dat", FileAccess.READ)
         var content = file.get_as_text()
         return content
 
  .. code-tab:: csharp
 
-    public void Save(string content)
+    public void SaveToFile(string content)
     {
         using var file = FileAccess.Open("user://save_game.dat", FileAccess.ModeFlags.Write);
         file.StoreString(content);
     }
     
-    public string Load()
+    public string LoadFromFile()
     {
         using var file = FileAccess.Open("user://save_game.dat", FileAccess.ModeFlags.Read);
         string content = file.GetAsText();
@@ -166,6 +166,8 @@ Methods
    +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`FileAccess<class_FileAccess>`                                           | :ref:`open_encrypted_with_pass<class_FileAccess_method_open_encrypted_with_pass>`\ (\ path\: :ref:`String<class_String>`, mode_flags\: :ref:`ModeFlags<enum_FileAccess_ModeFlags>`, pass\: :ref:`String<class_String>`\ ) |static|                           |
    +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`Error<enum_@GlobalScope_Error>`                                         | :ref:`resize<class_FileAccess_method_resize>`\ (\ length\: :ref:`int<class_int>`\ )                                                                                                                                                                          |
+   +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                                        | :ref:`seek<class_FileAccess_method_seek>`\ (\ position\: :ref:`int<class_int>`\ )                                                                                                                                                                            |
    +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                                        | :ref:`seek_end<class_FileAccess_method_seek_end>`\ (\ position\: :ref:`int<class_int>` = 0\ )                                                                                                                                                                |
@@ -948,6 +950,18 @@ Returns ``null`` if opening the file failed. You can use :ref:`get_open_error<cl
 
 ----
 
+.. _class_FileAccess_method_resize:
+
+.. rst-class:: classref-method
+
+:ref:`Error<enum_@GlobalScope_Error>` **resize**\ (\ length\: :ref:`int<class_int>`\ )
+
+Resizes the file to a specified length. The file must be open in a mode that permits writing. If the file is extended, NUL characters are appended. If the file is truncated, all data from the end file to the original length of the file is lost.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_FileAccess_method_seek:
 
 .. rst-class:: classref-method

+ 16 - 0
classes/class_meshinstance3d.rst

@@ -60,6 +60,8 @@ Methods
 .. table::
    :widths: auto
 
+   +-------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`ArrayMesh<class_ArrayMesh>`         | :ref:`bake_mesh_from_current_blend_shape_mix<class_MeshInstance3D_method_bake_mesh_from_current_blend_shape_mix>`\ (\ existing\: :ref:`ArrayMesh<class_ArrayMesh>` = null\ )                                   |
    +-------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                    | :ref:`create_convex_collision<class_MeshInstance3D_method_create_convex_collision>`\ (\ clean\: :ref:`bool<class_bool>` = true, simplify\: :ref:`bool<class_bool>` = false\ )                                  |
    +-------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -153,6 +155,20 @@ The :ref:`Skin<class_Skin>` to be used by this instance.
 Method Descriptions
 -------------------
 
+.. _class_MeshInstance3D_method_bake_mesh_from_current_blend_shape_mix:
+
+.. rst-class:: classref-method
+
+:ref:`ArrayMesh<class_ArrayMesh>` **bake_mesh_from_current_blend_shape_mix**\ (\ existing\: :ref:`ArrayMesh<class_ArrayMesh>` = null\ )
+
+Takes a snapshot from the current :ref:`ArrayMesh<class_ArrayMesh>` with all blend shapes applied according to their current weights and bakes it to the provided ``existing`` mesh. If no ``existing`` mesh is provided a new :ref:`ArrayMesh<class_ArrayMesh>` is created, baked and returned. Mesh surface materials are not copied.
+
+\ **Performance:** :ref:`Mesh<class_Mesh>` data needs to be received from the GPU, stalling the :ref:`RenderingServer<class_RenderingServer>` in the process.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_MeshInstance3D_method_create_convex_collision:
 
 .. rst-class:: classref-method

+ 55 - 27
classes/class_navigationmeshsourcegeometrydata2d.rst

@@ -31,33 +31,37 @@ Methods
 .. table::
    :widths: auto
 
-   +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                                           | :ref:`add_obstruction_outline<class_NavigationMeshSourceGeometryData2D_method_add_obstruction_outline>`\ (\ shape_outline\: :ref:`PackedVector2Array<class_PackedVector2Array>`\ )                                       |
-   +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                                           | :ref:`add_projected_obstruction<class_NavigationMeshSourceGeometryData2D_method_add_projected_obstruction>`\ (\ vertices\: :ref:`PackedVector2Array<class_PackedVector2Array>`, carve\: :ref:`bool<class_bool>`\ )       |
-   +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                                           | :ref:`add_traversable_outline<class_NavigationMeshSourceGeometryData2D_method_add_traversable_outline>`\ (\ shape_outline\: :ref:`PackedVector2Array<class_PackedVector2Array>`\ )                                       |
-   +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                                           | :ref:`clear<class_NavigationMeshSourceGeometryData2D_method_clear>`\ (\ )                                                                                                                                                |
-   +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                                           | :ref:`clear_projected_obstructions<class_NavigationMeshSourceGeometryData2D_method_clear_projected_obstructions>`\ (\ )                                                                                                  |
-   +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`Array<class_Array>`\[:ref:`PackedVector2Array<class_PackedVector2Array>`\] | :ref:`get_obstruction_outlines<class_NavigationMeshSourceGeometryData2D_method_get_obstruction_outlines>`\ (\ ) |const|                                                                                                  |
-   +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`Array<class_Array>`                                                        | :ref:`get_projected_obstructions<class_NavigationMeshSourceGeometryData2D_method_get_projected_obstructions>`\ (\ ) |const|                                                                                              |
-   +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`Array<class_Array>`\[:ref:`PackedVector2Array<class_PackedVector2Array>`\] | :ref:`get_traversable_outlines<class_NavigationMeshSourceGeometryData2D_method_get_traversable_outlines>`\ (\ ) |const|                                                                                                  |
-   +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`bool<class_bool>`                                                          | :ref:`has_data<class_NavigationMeshSourceGeometryData2D_method_has_data>`\ (\ )                                                                                                                                          |
-   +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                                           | :ref:`merge<class_NavigationMeshSourceGeometryData2D_method_merge>`\ (\ other_geometry\: :ref:`NavigationMeshSourceGeometryData2D<class_NavigationMeshSourceGeometryData2D>`\ )                                          |
-   +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                                           | :ref:`set_obstruction_outlines<class_NavigationMeshSourceGeometryData2D_method_set_obstruction_outlines>`\ (\ obstruction_outlines\: :ref:`Array<class_Array>`\[:ref:`PackedVector2Array<class_PackedVector2Array>`\]\ ) |
-   +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                                           | :ref:`set_projected_obstructions<class_NavigationMeshSourceGeometryData2D_method_set_projected_obstructions>`\ (\ projected_obstructions\: :ref:`Array<class_Array>`\ )                                                  |
-   +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                                           | :ref:`set_traversable_outlines<class_NavigationMeshSourceGeometryData2D_method_set_traversable_outlines>`\ (\ traversable_outlines\: :ref:`Array<class_Array>`\[:ref:`PackedVector2Array<class_PackedVector2Array>`\]\ ) |
-   +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                                           | :ref:`add_obstruction_outline<class_NavigationMeshSourceGeometryData2D_method_add_obstruction_outline>`\ (\ shape_outline\: :ref:`PackedVector2Array<class_PackedVector2Array>`\ )                                             |
+   +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                                           | :ref:`add_projected_obstruction<class_NavigationMeshSourceGeometryData2D_method_add_projected_obstruction>`\ (\ vertices\: :ref:`PackedVector2Array<class_PackedVector2Array>`, carve\: :ref:`bool<class_bool>`\ )             |
+   +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                                           | :ref:`add_traversable_outline<class_NavigationMeshSourceGeometryData2D_method_add_traversable_outline>`\ (\ shape_outline\: :ref:`PackedVector2Array<class_PackedVector2Array>`\ )                                             |
+   +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                                           | :ref:`append_obstruction_outlines<class_NavigationMeshSourceGeometryData2D_method_append_obstruction_outlines>`\ (\ obstruction_outlines\: :ref:`Array<class_Array>`\[:ref:`PackedVector2Array<class_PackedVector2Array>`\]\ ) |
+   +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                                           | :ref:`append_traversable_outlines<class_NavigationMeshSourceGeometryData2D_method_append_traversable_outlines>`\ (\ traversable_outlines\: :ref:`Array<class_Array>`\[:ref:`PackedVector2Array<class_PackedVector2Array>`\]\ ) |
+   +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                                           | :ref:`clear<class_NavigationMeshSourceGeometryData2D_method_clear>`\ (\ )                                                                                                                                                      |
+   +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                                           | :ref:`clear_projected_obstructions<class_NavigationMeshSourceGeometryData2D_method_clear_projected_obstructions>`\ (\ )                                                                                                        |
+   +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`Array<class_Array>`\[:ref:`PackedVector2Array<class_PackedVector2Array>`\] | :ref:`get_obstruction_outlines<class_NavigationMeshSourceGeometryData2D_method_get_obstruction_outlines>`\ (\ ) |const|                                                                                                        |
+   +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`Array<class_Array>`                                                        | :ref:`get_projected_obstructions<class_NavigationMeshSourceGeometryData2D_method_get_projected_obstructions>`\ (\ ) |const|                                                                                                    |
+   +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`Array<class_Array>`\[:ref:`PackedVector2Array<class_PackedVector2Array>`\] | :ref:`get_traversable_outlines<class_NavigationMeshSourceGeometryData2D_method_get_traversable_outlines>`\ (\ ) |const|                                                                                                        |
+   +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                                                          | :ref:`has_data<class_NavigationMeshSourceGeometryData2D_method_has_data>`\ (\ )                                                                                                                                                |
+   +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                                           | :ref:`merge<class_NavigationMeshSourceGeometryData2D_method_merge>`\ (\ other_geometry\: :ref:`NavigationMeshSourceGeometryData2D<class_NavigationMeshSourceGeometryData2D>`\ )                                                |
+   +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                                           | :ref:`set_obstruction_outlines<class_NavigationMeshSourceGeometryData2D_method_set_obstruction_outlines>`\ (\ obstruction_outlines\: :ref:`Array<class_Array>`\[:ref:`PackedVector2Array<class_PackedVector2Array>`\]\ )       |
+   +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                                           | :ref:`set_projected_obstructions<class_NavigationMeshSourceGeometryData2D_method_set_projected_obstructions>`\ (\ projected_obstructions\: :ref:`Array<class_Array>`\ )                                                        |
+   +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                                           | :ref:`set_traversable_outlines<class_NavigationMeshSourceGeometryData2D_method_set_traversable_outlines>`\ (\ traversable_outlines\: :ref:`Array<class_Array>`\[:ref:`PackedVector2Array<class_PackedVector2Array>`\]\ )       |
+   +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 .. rst-class:: classref-section-separator
 
@@ -104,6 +108,30 @@ Adds the outline points of a shape as traversable area.
 
 ----
 
+.. _class_NavigationMeshSourceGeometryData2D_method_append_obstruction_outlines:
+
+.. rst-class:: classref-method
+
+|void| **append_obstruction_outlines**\ (\ obstruction_outlines\: :ref:`Array<class_Array>`\[:ref:`PackedVector2Array<class_PackedVector2Array>`\]\ )
+
+Appends another array of ``obstruction_outlines`` at the end of the existing obstruction outlines array.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_NavigationMeshSourceGeometryData2D_method_append_traversable_outlines:
+
+.. rst-class:: classref-method
+
+|void| **append_traversable_outlines**\ (\ traversable_outlines\: :ref:`Array<class_Array>`\[:ref:`PackedVector2Array<class_PackedVector2Array>`\]\ )
+
+Appends another array of ``traversable_outlines`` at the end of the existing traversable outlines array.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_NavigationMeshSourceGeometryData2D_method_clear:
 
 .. rst-class:: classref-method

+ 14 - 0
classes/class_navigationmeshsourcegeometrydata3d.rst

@@ -40,6 +40,8 @@ Methods
    +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                              | :ref:`add_projected_obstruction<class_NavigationMeshSourceGeometryData3D_method_add_projected_obstruction>`\ (\ vertices\: :ref:`PackedVector3Array<class_PackedVector3Array>`, elevation\: :ref:`float<class_float>`, height\: :ref:`float<class_float>`, carve\: :ref:`bool<class_bool>`\ ) |
    +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                              | :ref:`append_arrays<class_NavigationMeshSourceGeometryData3D_method_append_arrays>`\ (\ vertices\: :ref:`PackedFloat32Array<class_PackedFloat32Array>`, indices\: :ref:`PackedInt32Array<class_PackedInt32Array>`\ )                                                                          |
+   +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                              | :ref:`clear<class_NavigationMeshSourceGeometryData3D_method_clear>`\ (\ )                                                                                                                                                                                                                     |
    +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                              | :ref:`clear_projected_obstructions<class_NavigationMeshSourceGeometryData3D_method_clear_projected_obstructions>`\ (\ )                                                                                                                                                                       |
@@ -118,6 +120,18 @@ Adds a projected obstruction shape to the source geometry. The ``vertices`` are
 
 ----
 
+.. _class_NavigationMeshSourceGeometryData3D_method_append_arrays:
+
+.. rst-class:: classref-method
+
+|void| **append_arrays**\ (\ vertices\: :ref:`PackedFloat32Array<class_PackedFloat32Array>`, indices\: :ref:`PackedInt32Array<class_PackedInt32Array>`\ )
+
+Appends arrays of ``vertices`` and ``indices`` at the end of the existing arrays. Adds the existing index as an offset to the appended indices.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_NavigationMeshSourceGeometryData3D_method_clear:
 
 .. rst-class:: classref-method

+ 14 - 0
classes/class_node.rst

@@ -209,6 +209,8 @@ Methods
    +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`bool<class_bool>`                                          | :ref:`is_node_ready<class_Node_method_is_node_ready>`\ (\ ) |const|                                                                                                                                                                     |
    +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                                          | :ref:`is_part_of_edited_scene<class_Node_method_is_part_of_edited_scene>`\ (\ ) |const|                                                                                                                                                 |
+   +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`bool<class_bool>`                                          | :ref:`is_physics_interpolated<class_Node_method_is_physics_interpolated>`\ (\ ) |const|                                                                                                                                                 |
    +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`bool<class_bool>`                                          | :ref:`is_physics_interpolated_and_enabled<class_Node_method_is_physics_interpolated_and_enabled>`\ (\ ) |const|                                                                                                                         |
@@ -2375,6 +2377,18 @@ Returns ``true`` if the node is ready, i.e. it's inside scene tree and all its c
 
 ----
 
+.. _class_Node_method_is_part_of_edited_scene:
+
+.. rst-class:: classref-method
+
+:ref:`bool<class_bool>` **is_part_of_edited_scene**\ (\ ) |const|
+
+Returns ``true`` if the node is part of the scene currently opened in the editor.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_Node_method_is_physics_interpolated:
 
 .. rst-class:: classref-method

+ 7 - 7
classes/class_openxrinterface.rst

@@ -692,7 +692,7 @@ Returns display refresh rates supported by the current HMD. Only returned if thi
 
 :ref:`Vector3<class_Vector3>` **get_hand_joint_angular_velocity**\ (\ hand\: :ref:`Hand<enum_OpenXRInterface_Hand>`, joint\: :ref:`HandJoints<enum_OpenXRInterface_HandJoints>`\ ) |const|
 
-**Deprecated:** Use :ref:`XRHandTracker.get_hand_joint_angular_velocity<class_XRHandTracker_method_get_hand_joint_angular_velocity>` obtained from :ref:`XRServer.get_hand_tracker<class_XRServer_method_get_hand_tracker>` instead.
+**Deprecated:** Use :ref:`XRHandTracker.get_hand_joint_angular_velocity<class_XRHandTracker_method_get_hand_joint_angular_velocity>` obtained from :ref:`XRServer.get_tracker<class_XRServer_method_get_tracker>` instead.
 
 If handtracking is enabled, returns the angular velocity of a joint (``joint``) of a hand (``hand``) as provided by OpenXR. This is relative to :ref:`XROrigin3D<class_XROrigin3D>`!
 
@@ -706,7 +706,7 @@ If handtracking is enabled, returns the angular velocity of a joint (``joint``)
 
 |bitfield|\[:ref:`HandJointFlags<enum_OpenXRInterface_HandJointFlags>`\] **get_hand_joint_flags**\ (\ hand\: :ref:`Hand<enum_OpenXRInterface_Hand>`, joint\: :ref:`HandJoints<enum_OpenXRInterface_HandJoints>`\ ) |const|
 
-**Deprecated:** Use :ref:`XRHandTracker.get_hand_joint_flags<class_XRHandTracker_method_get_hand_joint_flags>` obtained from :ref:`XRServer.get_hand_tracker<class_XRServer_method_get_hand_tracker>` instead.
+**Deprecated:** Use :ref:`XRHandTracker.get_hand_joint_flags<class_XRHandTracker_method_get_hand_joint_flags>` obtained from :ref:`XRServer.get_tracker<class_XRServer_method_get_tracker>` instead.
 
 If handtracking is enabled, returns flags that inform us of the validity of the tracking data.
 
@@ -720,7 +720,7 @@ If handtracking is enabled, returns flags that inform us of the validity of the
 
 :ref:`Vector3<class_Vector3>` **get_hand_joint_linear_velocity**\ (\ hand\: :ref:`Hand<enum_OpenXRInterface_Hand>`, joint\: :ref:`HandJoints<enum_OpenXRInterface_HandJoints>`\ ) |const|
 
-**Deprecated:** Use :ref:`XRHandTracker.get_hand_joint_linear_velocity<class_XRHandTracker_method_get_hand_joint_linear_velocity>` obtained from :ref:`XRServer.get_hand_tracker<class_XRServer_method_get_hand_tracker>` instead.
+**Deprecated:** Use :ref:`XRHandTracker.get_hand_joint_linear_velocity<class_XRHandTracker_method_get_hand_joint_linear_velocity>` obtained from :ref:`XRServer.get_tracker<class_XRServer_method_get_tracker>` instead.
 
 If handtracking is enabled, returns the linear velocity of a joint (``joint``) of a hand (``hand``) as provided by OpenXR. This is relative to :ref:`XROrigin3D<class_XROrigin3D>` without worldscale applied!
 
@@ -734,7 +734,7 @@ If handtracking is enabled, returns the linear velocity of a joint (``joint``) o
 
 :ref:`Vector3<class_Vector3>` **get_hand_joint_position**\ (\ hand\: :ref:`Hand<enum_OpenXRInterface_Hand>`, joint\: :ref:`HandJoints<enum_OpenXRInterface_HandJoints>`\ ) |const|
 
-**Deprecated:** Use :ref:`XRHandTracker.get_hand_joint_transform<class_XRHandTracker_method_get_hand_joint_transform>` obtained from :ref:`XRServer.get_hand_tracker<class_XRServer_method_get_hand_tracker>` instead.
+**Deprecated:** Use :ref:`XRHandTracker.get_hand_joint_transform<class_XRHandTracker_method_get_hand_joint_transform>` obtained from :ref:`XRServer.get_tracker<class_XRServer_method_get_tracker>` instead.
 
 If handtracking is enabled, returns the position of a joint (``joint``) of a hand (``hand``) as provided by OpenXR. This is relative to :ref:`XROrigin3D<class_XROrigin3D>` without worldscale applied!
 
@@ -748,7 +748,7 @@ If handtracking is enabled, returns the position of a joint (``joint``) of a han
 
 :ref:`float<class_float>` **get_hand_joint_radius**\ (\ hand\: :ref:`Hand<enum_OpenXRInterface_Hand>`, joint\: :ref:`HandJoints<enum_OpenXRInterface_HandJoints>`\ ) |const|
 
-**Deprecated:** Use :ref:`XRHandTracker.get_hand_joint_radius<class_XRHandTracker_method_get_hand_joint_radius>` obtained from :ref:`XRServer.get_hand_tracker<class_XRServer_method_get_hand_tracker>` instead.
+**Deprecated:** Use :ref:`XRHandTracker.get_hand_joint_radius<class_XRHandTracker_method_get_hand_joint_radius>` obtained from :ref:`XRServer.get_tracker<class_XRServer_method_get_tracker>` instead.
 
 If handtracking is enabled, returns the radius of a joint (``joint``) of a hand (``hand``) as provided by OpenXR. This is without worldscale applied!
 
@@ -762,7 +762,7 @@ If handtracking is enabled, returns the radius of a joint (``joint``) of a hand
 
 :ref:`Quaternion<class_Quaternion>` **get_hand_joint_rotation**\ (\ hand\: :ref:`Hand<enum_OpenXRInterface_Hand>`, joint\: :ref:`HandJoints<enum_OpenXRInterface_HandJoints>`\ ) |const|
 
-**Deprecated:** Use :ref:`XRHandTracker.get_hand_joint_transform<class_XRHandTracker_method_get_hand_joint_transform>` obtained from :ref:`XRServer.get_hand_tracker<class_XRServer_method_get_hand_tracker>` instead.
+**Deprecated:** Use :ref:`XRHandTracker.get_hand_joint_transform<class_XRHandTracker_method_get_hand_joint_transform>` obtained from :ref:`XRServer.get_tracker<class_XRServer_method_get_tracker>` instead.
 
 If handtracking is enabled, returns the rotation of a joint (``joint``) of a hand (``hand``) as provided by OpenXR.
 
@@ -776,7 +776,7 @@ If handtracking is enabled, returns the rotation of a joint (``joint``) of a han
 
 :ref:`HandTrackedSource<enum_OpenXRInterface_HandTrackedSource>` **get_hand_tracking_source**\ (\ hand\: :ref:`Hand<enum_OpenXRInterface_Hand>`\ ) |const|
 
-**Deprecated:** Use :ref:`XRHandTracker.hand_tracking_source<class_XRHandTracker_property_hand_tracking_source>` obtained from :ref:`XRServer.get_hand_tracker<class_XRServer_method_get_hand_tracker>` instead.
+**Deprecated:** Use :ref:`XRHandTracker.hand_tracking_source<class_XRHandTracker_property_hand_tracking_source>` obtained from :ref:`XRServer.get_tracker<class_XRServer_method_get_tracker>` instead.
 
 If handtracking is enabled and hand tracking source is supported, gets the source of the hand tracking data for ``hand``.
 

+ 5 - 5
classes/class_os.rst

@@ -669,27 +669,27 @@ Here's a minimal example on how to parse command-line arguments into a :ref:`Dic
     for argument in OS.get_cmdline_args():
         if argument.contains("="):
             var key_value = argument.split("=")
-            arguments[key_value[0].lstrip("--")] = key_value[1]
+            arguments[key_value[0].trim_prefix("--")] = key_value[1]
         else:
             # Options without an argument will be present in the dictionary,
             # with the value set to an empty string.
-            arguments[argument.lstrip("--")] = ""
+            arguments[argument.trim_prefix("--")] = ""
 
  .. code-tab:: csharp
 
-    var arguments = new Godot.Collections.Dictionary();
+    var arguments = new Dictionary<string, string>();
     foreach (var argument in OS.GetCmdlineArgs())
     {
         if (argument.Contains('='))
         {
             string[] keyValue = argument.Split("=");
-            arguments[keyValue[0].LStrip("--")] = keyValue[1];
+            arguments[keyValue[0].TrimPrefix("--")] = keyValue[1];
         }
         else
         {
             // Options without an argument will be present in the dictionary,
             // with the value set to an empty string.
-            arguments[keyValue[0].LStrip("--")] = "";
+            arguments[argument.TrimPrefix("--")] = "";
         }
     }
 

+ 2 - 0
classes/class_particleprocessmaterial.rst

@@ -1172,6 +1172,8 @@ Minimum directional velocity value, which is multiplied by :ref:`directional_vel
 
 The box's extents if :ref:`emission_shape<class_ParticleProcessMaterial_property_emission_shape>` is set to :ref:`EMISSION_SHAPE_BOX<class_ParticleProcessMaterial_constant_EMISSION_SHAPE_BOX>`.
 
+\ **Note:** :ref:`emission_box_extents<class_ParticleProcessMaterial_property_emission_box_extents>` starts from the center point and applies the X, Y, and Z values in both directions. The size is twice the area of the extents.
+
 .. rst-class:: classref-item-separator
 
 ----

+ 20 - 4
classes/class_projectsettings.rst

@@ -391,7 +391,7 @@ Properties
    +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+
    | :ref:`bool<class_bool>`                           | :ref:`display/window/energy_saving/keep_screen_on<class_ProjectSettings_property_display/window/energy_saving/keep_screen_on>`                                                                             | ``true``                                                                                         |
    +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+
-   | :ref:`bool<class_bool>`                           | :ref:`display/window/energy_saving/keep_screen_on.editor<class_ProjectSettings_property_display/window/energy_saving/keep_screen_on.editor>`                                                               | ``false``                                                                                        |
+   | :ref:`bool<class_bool>`                           | :ref:`display/window/energy_saving/keep_screen_on.editor_hint<class_ProjectSettings_property_display/window/energy_saving/keep_screen_on.editor_hint>`                                                     | ``false``                                                                                        |
    +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+
    | :ref:`int<class_int>`                             | :ref:`display/window/handheld/orientation<class_ProjectSettings_property_display/window/handheld/orientation>`                                                                                             | ``0``                                                                                            |
    +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+
@@ -541,6 +541,8 @@ Properties
    +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+
    | :ref:`float<class_float>`                         | :ref:`gui/timers/tooltip_delay_sec<class_ProjectSettings_property_gui/timers/tooltip_delay_sec>`                                                                                                           | ``0.5``                                                                                          |
    +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+
+   | :ref:`float<class_float>`                         | :ref:`gui/timers/tooltip_delay_sec.editor_hint<class_ProjectSettings_property_gui/timers/tooltip_delay_sec.editor_hint>`                                                                                   | ``0.5``                                                                                          |
+   +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+
    | :ref:`Dictionary<class_Dictionary>`               | :ref:`input/ui_accept<class_ProjectSettings_property_input/ui_accept>`                                                                                                                                     |                                                                                                  |
    +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+
    | :ref:`Dictionary<class_Dictionary>`               | :ref:`input/ui_cancel<class_ProjectSettings_property_input/ui_cancel>`                                                                                                                                     |                                                                                                  |
@@ -1748,6 +1750,8 @@ Path to an image used as the boot splash. If left empty, the default Godot Engin
 
 \ **Note:** The only supported format is PNG. Using another image format will result in an error.
 
+\ **Note:** The image will also show when opening the project in the editor. If you want to display the default splash image in the editor, add an empty override for ``editor_hint`` feature.
+
 .. rst-class:: classref-item-separator
 
 ----
@@ -3844,13 +3848,13 @@ If ``true``, keeps the screen on (even in case of inactivity), so the screensave
 
 ----
 
-.. _class_ProjectSettings_property_display/window/energy_saving/keep_screen_on.editor:
+.. _class_ProjectSettings_property_display/window/energy_saving/keep_screen_on.editor_hint:
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **display/window/energy_saving/keep_screen_on.editor** = ``false``
+:ref:`bool<class_bool>` **display/window/energy_saving/keep_screen_on.editor_hint** = ``false``
 
-Editor-only override for :ref:`display/window/energy_saving/keep_screen_on<class_ProjectSettings_property_display/window/energy_saving/keep_screen_on>`. Does not affect exported projects in debug or release mode.
+Editor-only override for :ref:`display/window/energy_saving/keep_screen_on<class_ProjectSettings_property_display/window/energy_saving/keep_screen_on>`. Does not affect running project.
 
 .. rst-class:: classref-item-separator
 
@@ -4862,6 +4866,18 @@ Default delay for tooltips (in seconds).
 
 ----
 
+.. _class_ProjectSettings_property_gui/timers/tooltip_delay_sec.editor_hint:
+
+.. rst-class:: classref-property
+
+:ref:`float<class_float>` **gui/timers/tooltip_delay_sec.editor_hint** = ``0.5``
+
+Delay for tooltips in the editor.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_ProjectSettings_property_input/ui_accept:
 
 .. rst-class:: classref-property

File diff suppressed because it is too large
+ 0 - 0
classes/class_refcounted.rst


+ 4 - 4
classes/class_renderingserver.rst

@@ -5836,15 +5836,15 @@ The normalization factor can be calculated from exposure value (EV100) as follow
 
 ::
 
-    func get_exposure_normalization(float ev100):
-        			    return 1.0 / (pow(2.0, ev100) * 1.2)
+    func get_exposure_normalization(ev100: float):
+        return 1.0 / (pow(2.0, ev100) * 1.2)
 
 The exposure value can be calculated from aperture (in f-stops), shutter speed (in seconds), and sensitivity (in ISO) as follows:
 
 ::
 
-    func get_exposure(float aperture, float shutter_speed, float sensitivity):
-        return log2((aperture * aperture) / shutterSpeed * (100.0 / sensitivity))
+    func get_exposure(aperture: float, shutter_speed: float, sensitivity: float):
+        return log((aperture * aperture) / shutter_speed * (100.0 / sensitivity)) / log(2)
 
 .. rst-class:: classref-item-separator
 

+ 12 - 0
classes/class_scripteditorbase.rst

@@ -140,6 +140,18 @@ Emitted when the user contextual goto and the item is in the same script.
 
 ----
 
+.. _class_ScriptEditorBase_signal_request_save_previous_state:
+
+.. rst-class:: classref-signal
+
+**request_save_previous_state**\ (\ line\: :ref:`int<class_int>`\ )
+
+Emitted when the user changes current script or moves caret by 10 or more columns within the same script.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_ScriptEditorBase_signal_search_in_files_requested:
 
 .. rst-class:: classref-signal

+ 15 - 1
classes/class_surfacetool.rst

@@ -88,6 +88,8 @@ Methods
    +----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                   | :ref:`create_from<class_SurfaceTool_method_create_from>`\ (\ existing\: :ref:`Mesh<class_Mesh>`, surface\: :ref:`int<class_int>`\ )                                                                                                                                                                                                                                                                                                                                                                                                                        |
    +----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                   | :ref:`create_from_arrays<class_SurfaceTool_method_create_from_arrays>`\ (\ arrays\: :ref:`Array<class_Array>`, primitive_type\: :ref:`PrimitiveType<enum_Mesh_PrimitiveType>` = 3\ )                                                                                                                                                                                                                                                                                                                                                                       |
+   +----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                   | :ref:`create_from_blend_shape<class_SurfaceTool_method_create_from_blend_shape>`\ (\ existing\: :ref:`Mesh<class_Mesh>`, surface\: :ref:`int<class_int>`, blend_shape\: :ref:`String<class_String>`\ )                                                                                                                                                                                                                                                                                                                                                     |
    +----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                   | :ref:`deindex<class_SurfaceTool_method_deindex>`\ (\ )                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
@@ -351,7 +353,7 @@ Returns a constructed :ref:`ArrayMesh<class_ArrayMesh>` from current information
 
 :ref:`Array<class_Array>` **commit_to_arrays**\ (\ )
 
-Commits the data to the same format used by :ref:`ArrayMesh.add_surface_from_arrays<class_ArrayMesh_method_add_surface_from_arrays>`. This way you can further process the mesh data using the :ref:`ArrayMesh<class_ArrayMesh>` API.
+Commits the data to the same format used by :ref:`ArrayMesh.add_surface_from_arrays<class_ArrayMesh_method_add_surface_from_arrays>`, :ref:`ImporterMesh.add_surface<class_ImporterMesh_method_add_surface>`, and :ref:`create_from_arrays<class_SurfaceTool_method_create_from_arrays>`. This way you can further process the mesh data using the :ref:`ArrayMesh<class_ArrayMesh>` or :ref:`ImporterMesh<class_ImporterMesh>` APIs.
 
 .. rst-class:: classref-item-separator
 
@@ -369,6 +371,18 @@ Creates a vertex array from an existing :ref:`Mesh<class_Mesh>`.
 
 ----
 
+.. _class_SurfaceTool_method_create_from_arrays:
+
+.. rst-class:: classref-method
+
+|void| **create_from_arrays**\ (\ arrays\: :ref:`Array<class_Array>`, primitive_type\: :ref:`PrimitiveType<enum_Mesh_PrimitiveType>` = 3\ )
+
+Creates this SurfaceTool from existing vertex arrays such as returned by :ref:`commit_to_arrays<class_SurfaceTool_method_commit_to_arrays>`, :ref:`Mesh.surface_get_arrays<class_Mesh_method_surface_get_arrays>`, :ref:`Mesh.surface_get_blend_shape_arrays<class_Mesh_method_surface_get_blend_shape_arrays>`, :ref:`ImporterMesh.get_surface_arrays<class_ImporterMesh_method_get_surface_arrays>`, and :ref:`ImporterMesh.get_surface_blend_shape_arrays<class_ImporterMesh_method_get_surface_blend_shape_arrays>`. ``primitive_type`` controls the type of mesh data, defaulting to :ref:`Mesh.PRIMITIVE_TRIANGLES<class_Mesh_constant_PRIMITIVE_TRIANGLES>`.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_SurfaceTool_method_create_from_blend_shape:
 
 .. rst-class:: classref-method

+ 30 - 0
classes/class_tabbar.rst

@@ -96,6 +96,8 @@ Methods
    +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`String<class_String>`                      | :ref:`get_tab_title<class_TabBar_method_get_tab_title>`\ (\ tab_idx\: :ref:`int<class_int>`\ ) |const|                                                                         |
    +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`String<class_String>`                      | :ref:`get_tab_tooltip<class_TabBar_method_get_tab_tooltip>`\ (\ tab_idx\: :ref:`int<class_int>`\ ) |const|                                                                     |
+   +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`bool<class_bool>`                          | :ref:`is_tab_disabled<class_TabBar_method_is_tab_disabled>`\ (\ tab_idx\: :ref:`int<class_int>`\ ) |const|                                                                     |
    +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`bool<class_bool>`                          | :ref:`is_tab_hidden<class_TabBar_method_is_tab_hidden>`\ (\ tab_idx\: :ref:`int<class_int>`\ ) |const|                                                                         |
@@ -126,6 +128,8 @@ Methods
    +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                           | :ref:`set_tab_title<class_TabBar_method_set_tab_title>`\ (\ tab_idx\: :ref:`int<class_int>`, title\: :ref:`String<class_String>`\ )                                            |
    +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                           | :ref:`set_tab_tooltip<class_TabBar_method_set_tab_tooltip>`\ (\ tab_idx\: :ref:`int<class_int>`, tooltip\: :ref:`String<class_String>`\ )                                      |
+   +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 .. rst-class:: classref-reftable-group
 
@@ -790,6 +794,18 @@ Returns the title of the tab at index ``tab_idx``.
 
 ----
 
+.. _class_TabBar_method_get_tab_tooltip:
+
+.. rst-class:: classref-method
+
+:ref:`String<class_String>` **get_tab_tooltip**\ (\ tab_idx\: :ref:`int<class_int>`\ ) |const|
+
+Returns the tooltip text of the tab at index ``tab_idx``.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_TabBar_method_is_tab_disabled:
 
 .. rst-class:: classref-method
@@ -966,6 +982,20 @@ Sets tab title base writing direction.
 
 Sets a ``title`` for the tab at index ``tab_idx``.
 
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_TabBar_method_set_tab_tooltip:
+
+.. rst-class:: classref-method
+
+|void| **set_tab_tooltip**\ (\ tab_idx\: :ref:`int<class_int>`, tooltip\: :ref:`String<class_String>`\ )
+
+Sets a ``tooltip`` for tab at index ``tab_idx``.
+
+\ **Note:** By default, if the ``tooltip`` is empty and the tab text is truncated (not all characters fit into the tab), the title will be displayed as a tooltip. To hide the tooltip, assign ``" "`` as the ``tooltip`` text.
+
 .. rst-class:: classref-section-separator
 
 ----

+ 58 - 0
classes/class_tabcontainer.rst

@@ -87,6 +87,8 @@ Methods
    +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`Texture2D<class_Texture2D>` | :ref:`get_tab_icon<class_TabContainer_method_get_tab_icon>`\ (\ tab_idx\: :ref:`int<class_int>`\ ) |const|                                                 |
    +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`int<class_int>`             | :ref:`get_tab_icon_max_width<class_TabContainer_method_get_tab_icon_max_width>`\ (\ tab_idx\: :ref:`int<class_int>`\ ) |const|                             |
+   +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`int<class_int>`             | :ref:`get_tab_idx_at_point<class_TabContainer_method_get_tab_idx_at_point>`\ (\ point\: :ref:`Vector2<class_Vector2>`\ ) |const|                           |
    +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`int<class_int>`             | :ref:`get_tab_idx_from_control<class_TabContainer_method_get_tab_idx_from_control>`\ (\ control\: :ref:`Control<class_Control>`\ ) |const|                 |
@@ -95,6 +97,8 @@ Methods
    +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`String<class_String>`       | :ref:`get_tab_title<class_TabContainer_method_get_tab_title>`\ (\ tab_idx\: :ref:`int<class_int>`\ ) |const|                                               |
    +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`String<class_String>`       | :ref:`get_tab_tooltip<class_TabContainer_method_get_tab_tooltip>`\ (\ tab_idx\: :ref:`int<class_int>`\ ) |const|                                           |
+   +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`bool<class_bool>`           | :ref:`is_tab_disabled<class_TabContainer_method_is_tab_disabled>`\ (\ tab_idx\: :ref:`int<class_int>`\ ) |const|                                           |
    +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`bool<class_bool>`           | :ref:`is_tab_hidden<class_TabContainer_method_is_tab_hidden>`\ (\ tab_idx\: :ref:`int<class_int>`\ ) |const|                                               |
@@ -113,10 +117,14 @@ Methods
    +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                            | :ref:`set_tab_icon<class_TabContainer_method_set_tab_icon>`\ (\ tab_idx\: :ref:`int<class_int>`, icon\: :ref:`Texture2D<class_Texture2D>`\ )               |
    +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                            | :ref:`set_tab_icon_max_width<class_TabContainer_method_set_tab_icon_max_width>`\ (\ tab_idx\: :ref:`int<class_int>`, width\: :ref:`int<class_int>`\ )      |
+   +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                            | :ref:`set_tab_metadata<class_TabContainer_method_set_tab_metadata>`\ (\ tab_idx\: :ref:`int<class_int>`, metadata\: :ref:`Variant<class_Variant>`\ )       |
    +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                            | :ref:`set_tab_title<class_TabContainer_method_set_tab_title>`\ (\ tab_idx\: :ref:`int<class_int>`, title\: :ref:`String<class_String>`\ )                  |
    +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                            | :ref:`set_tab_tooltip<class_TabContainer_method_set_tab_tooltip>`\ (\ tab_idx\: :ref:`int<class_int>`, tooltip\: :ref:`String<class_String>`\ )            |
+   +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 .. rst-class:: classref-reftable-group
 
@@ -615,6 +623,18 @@ Returns the :ref:`Texture2D<class_Texture2D>` for the tab at index ``tab_idx`` o
 
 ----
 
+.. _class_TabContainer_method_get_tab_icon_max_width:
+
+.. rst-class:: classref-method
+
+:ref:`int<class_int>` **get_tab_icon_max_width**\ (\ tab_idx\: :ref:`int<class_int>`\ ) |const|
+
+Returns the maximum allowed width of the icon for the tab at index ``tab_idx``.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_TabContainer_method_get_tab_idx_at_point:
 
 .. rst-class:: classref-method
@@ -663,6 +683,18 @@ Returns the title of the tab at index ``tab_idx``. Tab titles default to the nam
 
 ----
 
+.. _class_TabContainer_method_get_tab_tooltip:
+
+.. rst-class:: classref-method
+
+:ref:`String<class_String>` **get_tab_tooltip**\ (\ tab_idx\: :ref:`int<class_int>`\ ) |const|
+
+Returns the tooltip text of the tab at index ``tab_idx``.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_TabContainer_method_is_tab_disabled:
 
 .. rst-class:: classref-method
@@ -771,6 +803,18 @@ Sets an icon for the tab at index ``tab_idx``.
 
 ----
 
+.. _class_TabContainer_method_set_tab_icon_max_width:
+
+.. rst-class:: classref-method
+
+|void| **set_tab_icon_max_width**\ (\ tab_idx\: :ref:`int<class_int>`, width\: :ref:`int<class_int>`\ )
+
+Sets the maximum allowed width of the icon for the tab at index ``tab_idx``. This limit is applied on top of the default size of the icon and on top of :ref:`icon_max_width<class_TabContainer_theme_constant_icon_max_width>`. The height is adjusted according to the icon's ratio.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_TabContainer_method_set_tab_metadata:
 
 .. rst-class:: classref-method
@@ -791,6 +835,20 @@ Sets the metadata value for the tab at index ``tab_idx``, which can be retrieved
 
 Sets a custom title for the tab at index ``tab_idx`` (tab titles default to the name of the indexed child node). Set it back to the child's name to make the tab default to it again.
 
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_TabContainer_method_set_tab_tooltip:
+
+.. rst-class:: classref-method
+
+|void| **set_tab_tooltip**\ (\ tab_idx\: :ref:`int<class_int>`, tooltip\: :ref:`String<class_String>`\ )
+
+Sets a custom tooltip text for tab at index ``tab_idx``.
+
+\ **Note:** By default, if the ``tooltip`` is empty and the tab text is truncated (not all characters fit into the tab), the title will be displayed as a tooltip. To hide the tooltip, assign ``" "`` as the ``tooltip`` text.
+
 .. rst-class:: classref-section-separator
 
 ----

+ 2 - 2
classes/class_textserver.rst

@@ -394,7 +394,7 @@ Methods
    +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`float<class_float>`                                        | :ref:`shaped_text_get_width<class_TextServer_method_shaped_text_get_width>`\ (\ shaped\: :ref:`RID<class_RID>`\ ) |const|                                                                                                                                                                                                                                                                                 |
    +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`PackedInt32Array<class_PackedInt32Array>`                  | :ref:`shaped_text_get_word_breaks<class_TextServer_method_shaped_text_get_word_breaks>`\ (\ shaped\: :ref:`RID<class_RID>`, grapheme_flags\: |bitfield|\[:ref:`GraphemeFlag<enum_TextServer_GraphemeFlag>`\] = 264\ ) |const|                                                                                                                                                                             |
+   | :ref:`PackedInt32Array<class_PackedInt32Array>`                  | :ref:`shaped_text_get_word_breaks<class_TextServer_method_shaped_text_get_word_breaks>`\ (\ shaped\: :ref:`RID<class_RID>`, grapheme_flags\: |bitfield|\[:ref:`GraphemeFlag<enum_TextServer_GraphemeFlag>`\] = 264, skip_grapheme_flags\: |bitfield|\[:ref:`GraphemeFlag<enum_TextServer_GraphemeFlag>`\] = 4\ ) |const|                                                                                  |
    +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`bool<class_bool>`                                          | :ref:`shaped_text_has_visible_chars<class_TextServer_method_shaped_text_has_visible_chars>`\ (\ shaped\: :ref:`RID<class_RID>`\ ) |const|                                                                                                                                                                                                                                                                 |
    +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -3809,7 +3809,7 @@ Returns width (for horizontal layout) or height (for vertical) of the text.
 
 .. rst-class:: classref-method
 
-:ref:`PackedInt32Array<class_PackedInt32Array>` **shaped_text_get_word_breaks**\ (\ shaped\: :ref:`RID<class_RID>`, grapheme_flags\: |bitfield|\[:ref:`GraphemeFlag<enum_TextServer_GraphemeFlag>`\] = 264\ ) |const|
+:ref:`PackedInt32Array<class_PackedInt32Array>` **shaped_text_get_word_breaks**\ (\ shaped\: :ref:`RID<class_RID>`, grapheme_flags\: |bitfield|\[:ref:`GraphemeFlag<enum_TextServer_GraphemeFlag>`\] = 264, skip_grapheme_flags\: |bitfield|\[:ref:`GraphemeFlag<enum_TextServer_GraphemeFlag>`\] = 4\ ) |const|
 
 Breaks text into words and returns array of character ranges. Use ``grapheme_flags`` to set what characters are used for breaking (see :ref:`GraphemeFlag<enum_TextServer_GraphemeFlag>`).
 

+ 2 - 2
classes/class_textserverextension.rst

@@ -398,7 +398,7 @@ Methods
    +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`float<class_float>`                                       | :ref:`_shaped_text_get_width<class_TextServerExtension_private_method__shaped_text_get_width>`\ (\ shaped\: :ref:`RID<class_RID>`\ ) |virtual| |const|                                                                                                                                                                                                                                                                |
    +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`PackedInt32Array<class_PackedInt32Array>`                 | :ref:`_shaped_text_get_word_breaks<class_TextServerExtension_private_method__shaped_text_get_word_breaks>`\ (\ shaped\: :ref:`RID<class_RID>`, grapheme_flags\: |bitfield|\[:ref:`GraphemeFlag<enum_TextServer_GraphemeFlag>`\]\ ) |virtual| |const|                                                                                                                                                                  |
+   | :ref:`PackedInt32Array<class_PackedInt32Array>`                 | :ref:`_shaped_text_get_word_breaks<class_TextServerExtension_private_method__shaped_text_get_word_breaks>`\ (\ shaped\: :ref:`RID<class_RID>`, grapheme_flags\: |bitfield|\[:ref:`GraphemeFlag<enum_TextServer_GraphemeFlag>`\], skip_grapheme_flags\: |bitfield|\[:ref:`GraphemeFlag<enum_TextServer_GraphemeFlag>`\]\ ) |virtual| |const|                                                                           |
    +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`int<class_int>`                                           | :ref:`_shaped_text_hit_test_grapheme<class_TextServerExtension_private_method__shaped_text_hit_test_grapheme>`\ (\ shaped\: :ref:`RID<class_RID>`, coord\: :ref:`float<class_float>`\ ) |virtual| |const|                                                                                                                                                                                                             |
    +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -3036,7 +3036,7 @@ Returns width (for horizontal layout) or height (for vertical) of the text.
 
 .. rst-class:: classref-method
 
-:ref:`PackedInt32Array<class_PackedInt32Array>` **_shaped_text_get_word_breaks**\ (\ shaped\: :ref:`RID<class_RID>`, grapheme_flags\: |bitfield|\[:ref:`GraphemeFlag<enum_TextServer_GraphemeFlag>`\]\ ) |virtual| |const|
+:ref:`PackedInt32Array<class_PackedInt32Array>` **_shaped_text_get_word_breaks**\ (\ shaped\: :ref:`RID<class_RID>`, grapheme_flags\: |bitfield|\[:ref:`GraphemeFlag<enum_TextServer_GraphemeFlag>`\], skip_grapheme_flags\: |bitfield|\[:ref:`GraphemeFlag<enum_TextServer_GraphemeFlag>`\]\ ) |virtual| |const|
 
 **Optional.**\ 
 

+ 22 - 22
classes/class_tilemaplayer.rst

@@ -33,27 +33,27 @@ Properties
 .. table::
    :widths: auto
 
-   +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------+-----------------------------+
-   | :ref:`bool<class_bool>`                                           | :ref:`collision_enabled<class_TileMapLayer_property_collision_enabled>`                   | ``true``                    |
-   +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------+-----------------------------+
-   | :ref:`DebugVisibilityMode<enum_TileMapLayer_DebugVisibilityMode>` | :ref:`collision_visibility_mode<class_TileMapLayer_property_collision_visibility_mode>`   | ``0``                       |
-   +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------+-----------------------------+
-   | :ref:`bool<class_bool>`                                           | :ref:`enabled<class_TileMapLayer_property_enabled>`                                       | ``true``                    |
-   +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------+-----------------------------+
-   | :ref:`bool<class_bool>`                                           | :ref:`navigation_enabled<class_TileMapLayer_property_navigation_enabled>`                 | ``true``                    |
-   +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------+-----------------------------+
-   | :ref:`DebugVisibilityMode<enum_TileMapLayer_DebugVisibilityMode>` | :ref:`navigation_visibility_mode<class_TileMapLayer_property_navigation_visibility_mode>` | ``0``                       |
-   +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------+-----------------------------+
-   | :ref:`int<class_int>`                                             | :ref:`rendering_quadrant_size<class_TileMapLayer_property_rendering_quadrant_size>`       | ``16``                      |
-   +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------+-----------------------------+
-   | :ref:`PackedByteArray<class_PackedByteArray>`                     | :ref:`tile_map_data<class_TileMapLayer_property_tile_map_data>`                           | ``PackedByteArray("AAA=")`` |
-   +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------+-----------------------------+
-   | :ref:`TileSet<class_TileSet>`                                     | :ref:`tile_set<class_TileMapLayer_property_tile_set>`                                     |                             |
-   +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------+-----------------------------+
-   | :ref:`bool<class_bool>`                                           | :ref:`use_kinematic_bodies<class_TileMapLayer_property_use_kinematic_bodies>`             | ``false``                   |
-   +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------+-----------------------------+
-   | :ref:`int<class_int>`                                             | :ref:`y_sort_origin<class_TileMapLayer_property_y_sort_origin>`                           | ``0``                       |
-   +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------+-----------------------------+
+   +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------+-----------------------+
+   | :ref:`bool<class_bool>`                                           | :ref:`collision_enabled<class_TileMapLayer_property_collision_enabled>`                   | ``true``              |
+   +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------+-----------------------+
+   | :ref:`DebugVisibilityMode<enum_TileMapLayer_DebugVisibilityMode>` | :ref:`collision_visibility_mode<class_TileMapLayer_property_collision_visibility_mode>`   | ``0``                 |
+   +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------+-----------------------+
+   | :ref:`bool<class_bool>`                                           | :ref:`enabled<class_TileMapLayer_property_enabled>`                                       | ``true``              |
+   +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------+-----------------------+
+   | :ref:`bool<class_bool>`                                           | :ref:`navigation_enabled<class_TileMapLayer_property_navigation_enabled>`                 | ``true``              |
+   +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------+-----------------------+
+   | :ref:`DebugVisibilityMode<enum_TileMapLayer_DebugVisibilityMode>` | :ref:`navigation_visibility_mode<class_TileMapLayer_property_navigation_visibility_mode>` | ``0``                 |
+   +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------+-----------------------+
+   | :ref:`int<class_int>`                                             | :ref:`rendering_quadrant_size<class_TileMapLayer_property_rendering_quadrant_size>`       | ``16``                |
+   +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------+-----------------------+
+   | :ref:`PackedByteArray<class_PackedByteArray>`                     | :ref:`tile_map_data<class_TileMapLayer_property_tile_map_data>`                           | ``PackedByteArray()`` |
+   +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------+-----------------------+
+   | :ref:`TileSet<class_TileSet>`                                     | :ref:`tile_set<class_TileMapLayer_property_tile_set>`                                     |                       |
+   +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------+-----------------------+
+   | :ref:`bool<class_bool>`                                           | :ref:`use_kinematic_bodies<class_TileMapLayer_property_use_kinematic_bodies>`             | ``false``             |
+   +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------+-----------------------+
+   | :ref:`int<class_int>`                                             | :ref:`y_sort_origin<class_TileMapLayer_property_y_sort_origin>`                           | ``0``                 |
+   +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------+-----------------------+
 
 .. rst-class:: classref-reftable-group
 
@@ -298,7 +298,7 @@ The quadrant size does not apply on a Y-sorted **TileMapLayer**, as tiles are be
 
 .. rst-class:: classref-property
 
-:ref:`PackedByteArray<class_PackedByteArray>` **tile_map_data** = ``PackedByteArray("AAA=")``
+:ref:`PackedByteArray<class_PackedByteArray>` **tile_map_data** = ``PackedByteArray()``
 
 .. rst-class:: classref-property-setget
 

+ 4 - 4
classes/class_tree.rst

@@ -1514,7 +1514,7 @@ The maximum allowed width of the icon in item's cells. This limit is applied on
 
 :ref:`int<class_int>` **inner_item_margin_bottom** = ``0``
 
-The inner bottom margin of an item.
+The inner bottom margin of a cell.
 
 .. rst-class:: classref-item-separator
 
@@ -1526,7 +1526,7 @@ The inner bottom margin of an item.
 
 :ref:`int<class_int>` **inner_item_margin_left** = ``0``
 
-The inner left margin of an item.
+The inner left margin of a cell.
 
 .. rst-class:: classref-item-separator
 
@@ -1538,7 +1538,7 @@ The inner left margin of an item.
 
 :ref:`int<class_int>` **inner_item_margin_right** = ``0``
 
-The inner right margin of an item.
+The inner right margin of a cell.
 
 .. rst-class:: classref-item-separator
 
@@ -1550,7 +1550,7 @@ The inner right margin of an item.
 
 :ref:`int<class_int>` **inner_item_margin_top** = ``0``
 
-The inner top margin of an item.
+The inner top margin of a cell.
 
 .. rst-class:: classref-item-separator
 

+ 3 - 3
classes/class_webxrinterface.rst

@@ -159,7 +159,7 @@ Methods
    +---------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`TargetRayMode<enum_WebXRInterface_TargetRayMode>` | :ref:`get_input_source_target_ray_mode<class_WebXRInterface_method_get_input_source_target_ray_mode>`\ (\ input_source_id\: :ref:`int<class_int>`\ ) |const| |
    +---------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`XRPositionalTracker<class_XRPositionalTracker>`   | :ref:`get_input_source_tracker<class_WebXRInterface_method_get_input_source_tracker>`\ (\ input_source_id\: :ref:`int<class_int>`\ ) |const|                 |
+   | :ref:`XRControllerTracker<class_XRControllerTracker>`   | :ref:`get_input_source_tracker<class_WebXRInterface_method_get_input_source_tracker>`\ (\ input_source_id\: :ref:`int<class_int>`\ ) |const|                 |
    +---------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`bool<class_bool>`                                 | :ref:`is_input_source_active<class_WebXRInterface_method_is_input_source_active>`\ (\ input_source_id\: :ref:`int<class_int>`\ ) |const|                     |
    +---------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -598,9 +598,9 @@ This can help interpret the input coming from that input source. See `XRInputSou
 
 .. rst-class:: classref-method
 
-:ref:`XRPositionalTracker<class_XRPositionalTracker>` **get_input_source_tracker**\ (\ input_source_id\: :ref:`int<class_int>`\ ) |const|
+:ref:`XRControllerTracker<class_XRControllerTracker>` **get_input_source_tracker**\ (\ input_source_id\: :ref:`int<class_int>`\ ) |const|
 
-Gets an :ref:`XRPositionalTracker<class_XRPositionalTracker>` for the given ``input_source_id``.
+Gets an :ref:`XRControllerTracker<class_XRControllerTracker>` for the given ``input_source_id``.
 
 In the context of WebXR, an input source can be an advanced VR controller like the Oculus Touch or Index controllers, or even a tap on the screen, a spoken voice command or a button press on the device itself. When a non-traditional input source is used, interpret the position and orientation of the :ref:`XRPositionalTracker<class_XRPositionalTracker>` as a ray pointing at the object the user wishes to interact with.
 

+ 8 - 0
classes/class_workerthreadpool.rst

@@ -120,6 +120,8 @@ The number of threads the task is distributed to is defined by ``tasks_needed``,
 
 Returns a group task ID that can be used by other methods.
 
+\ **Warning:** Every task must be waited for completion using :ref:`wait_for_task_completion<class_WorkerThreadPool_method_wait_for_task_completion>` or :ref:`wait_for_group_task_completion<class_WorkerThreadPool_method_wait_for_group_task_completion>` at some point so that any allocated resources inside the task can be cleaned up.
+
 .. rst-class:: classref-item-separator
 
 ----
@@ -134,6 +136,8 @@ Adds ``action`` as a task to be executed by a worker thread. ``high_priority`` d
 
 Returns a task ID that can be used by other methods.
 
+\ **Warning:** Every task must be waited for completion using :ref:`wait_for_task_completion<class_WorkerThreadPool_method_wait_for_task_completion>` or :ref:`wait_for_group_task_completion<class_WorkerThreadPool_method_wait_for_group_task_completion>` at some point so that any allocated resources inside the task can be cleaned up.
+
 .. rst-class:: classref-item-separator
 
 ----
@@ -160,6 +164,8 @@ Returns how many times the :ref:`Callable<class_Callable>` of the group task wit
 
 Returns ``true`` if the group task with the given ID is completed.
 
+\ **Note:** You should only call this method between adding the group task and awaiting its completion.
+
 .. rst-class:: classref-item-separator
 
 ----
@@ -172,6 +178,8 @@ Returns ``true`` if the group task with the given ID is completed.
 
 Returns ``true`` if the task with the given ID is completed.
 
+\ **Note:** You should only call this method between adding the task and awaiting its completion.
+
 .. rst-class:: classref-item-separator
 
 ----

+ 10 - 29
classes/class_xrbodymodifier3d.rst

@@ -21,9 +21,9 @@ A node for driving body meshes from :ref:`XRBodyTracker<class_XRBodyTracker>` da
 Description
 -----------
 
-This node uses body tracking data from a :ref:`XRBodyTracker<class_XRBodyTracker>` to animate the skeleton of a body mesh.
+This node uses body tracking data from an :ref:`XRBodyTracker<class_XRBodyTracker>` to pose the skeleton of a body mesh.
 
-This node positions itself at the :ref:`XRBodyTracker.JOINT_ROOT<class_XRBodyTracker_constant_JOINT_ROOT>` position and scales itself to :ref:`XRServer.world_scale<class_XRServer_property_world_scale>`. Adding the body model as a child of this node will result in the model being positioned and scaled correctly for XR experiences.
+Positioning of the body is performed by creating an :ref:`XRNode3D<class_XRNode3D>` ancestor of the body mesh driven by the same :ref:`XRBodyTracker<class_XRBodyTracker>`.
 
 The body tracking position-data is scaled by :ref:`Skeleton3D.motion_scale<class_Skeleton3D_property_motion_scale>` when applied to the skeleton, which can be used to adjust the tracked body to match the scale of the body model.
 
@@ -42,15 +42,13 @@ Properties
 .. table::
    :widths: auto
 
-   +-------------------------------------------------------------------+-----------------------------------------------------------------------------+-------------------+
-   | :ref:`StringName<class_StringName>`                               | :ref:`body_tracker<class_XRBodyModifier3D_property_body_tracker>`           | ``&"/user/body"`` |
-   +-------------------------------------------------------------------+-----------------------------------------------------------------------------+-------------------+
-   | |bitfield|\[:ref:`BodyUpdate<enum_XRBodyModifier3D_BodyUpdate>`\] | :ref:`body_update<class_XRBodyModifier3D_property_body_update>`             | ``7``             |
-   +-------------------------------------------------------------------+-----------------------------------------------------------------------------+-------------------+
-   | :ref:`BoneUpdate<enum_XRBodyModifier3D_BoneUpdate>`               | :ref:`bone_update<class_XRBodyModifier3D_property_bone_update>`             | ``0``             |
-   +-------------------------------------------------------------------+-----------------------------------------------------------------------------+-------------------+
-   | :ref:`bool<class_bool>`                                           | :ref:`show_when_tracked<class_XRBodyModifier3D_property_show_when_tracked>` | ``true``          |
-   +-------------------------------------------------------------------+-----------------------------------------------------------------------------+-------------------+
+   +-------------------------------------------------------------------+-------------------------------------------------------------------+---------------------------+
+   | :ref:`StringName<class_StringName>`                               | :ref:`body_tracker<class_XRBodyModifier3D_property_body_tracker>` | ``&"/user/body_tracker"`` |
+   +-------------------------------------------------------------------+-------------------------------------------------------------------+---------------------------+
+   | |bitfield|\[:ref:`BodyUpdate<enum_XRBodyModifier3D_BodyUpdate>`\] | :ref:`body_update<class_XRBodyModifier3D_property_body_update>`   | ``7``                     |
+   +-------------------------------------------------------------------+-------------------------------------------------------------------+---------------------------+
+   | :ref:`BoneUpdate<enum_XRBodyModifier3D_BoneUpdate>`               | :ref:`bone_update<class_XRBodyModifier3D_property_bone_update>`   | ``0``                     |
+   +-------------------------------------------------------------------+-------------------------------------------------------------------+---------------------------+
 
 .. rst-class:: classref-section-separator
 
@@ -138,7 +136,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`StringName<class_StringName>` **body_tracker** = ``&"/user/body"``
+:ref:`StringName<class_StringName>` **body_tracker** = ``&"/user/body_tracker"``
 
 .. rst-class:: classref-property-setget
 
@@ -181,23 +179,6 @@ Specifies the body parts to update.
 
 Specifies the type of updates to perform on the bones.
 
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_XRBodyModifier3D_property_show_when_tracked:
-
-.. rst-class:: classref-property
-
-:ref:`bool<class_bool>` **show_when_tracked** = ``true``
-
-.. rst-class:: classref-property-setget
-
-- |void| **set_show_when_tracked**\ (\ value\: :ref:`bool<class_bool>`\ )
-- :ref:`bool<class_bool>` **get_show_when_tracked**\ (\ )
-
-If true then the nodes visibility is determined by whether tracking data is available.
-
 .. |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 - 6
classes/class_xrbodytracker.rst

@@ -12,7 +12,7 @@ XRBodyTracker
 
 **Experimental:** This class may be changed or removed in future versions.
 
-**Inherits:** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`XRPositionalTracker<class_XRPositionalTracker>` **<** :ref:`XRTracker<class_XRTracker>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 A tracked body in XR.
 
@@ -40,11 +40,13 @@ Properties
 .. table::
    :widths: auto
 
-   +--------------------------------------------------------------+--------------------------------------------------------------------------+-----------+
-   | |bitfield|\[:ref:`BodyFlags<enum_XRBodyTracker_BodyFlags>`\] | :ref:`body_flags<class_XRBodyTracker_property_body_flags>`               | ``0``     |
-   +--------------------------------------------------------------+--------------------------------------------------------------------------+-----------+
-   | :ref:`bool<class_bool>`                                      | :ref:`has_tracking_data<class_XRBodyTracker_property_has_tracking_data>` | ``false`` |
-   +--------------------------------------------------------------+--------------------------------------------------------------------------+-----------+
+   +--------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------+
+   | |bitfield|\[:ref:`BodyFlags<enum_XRBodyTracker_BodyFlags>`\] | :ref:`body_flags<class_XRBodyTracker_property_body_flags>`               | ``0``                                                              |
+   +--------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                                      | :ref:`has_tracking_data<class_XRBodyTracker_property_has_tracking_data>` | ``false``                                                          |
+   +--------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------+
+   | :ref:`TrackerType<enum_XRServer_TrackerType>`                | type                                                                     | ``32`` (overrides :ref:`XRTracker<class_XRTracker_property_type>`) |
+   +--------------------------------------------------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------+
 
 .. rst-class:: classref-reftable-group
 

+ 54 - 0
classes/class_xrcontrollertracker.rst

@@ -0,0 +1,54 @@
+: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/XRControllerTracker.xml.
+
+.. _class_XRControllerTracker:
+
+XRControllerTracker
+===================
+
+**Inherits:** :ref:`XRPositionalTracker<class_XRPositionalTracker>` **<** :ref:`XRTracker<class_XRTracker>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
+
+A tracked controller.
+
+.. rst-class:: classref-introduction-group
+
+Description
+-----------
+
+An instance of this object represents a controller that is tracked.
+
+As controllers are turned on and the :ref:`XRInterface<class_XRInterface>` detects them, instances of this object are automatically added to this list of active tracking objects accessible through the :ref:`XRServer<class_XRServer>`.
+
+The :ref:`XRController3D<class_XRController3D>` consumes objects of this type and should be used in your project.
+
+.. rst-class:: classref-introduction-group
+
+Tutorials
+---------
+
+- :doc:`XR documentation index <../tutorials/xr/index>`
+
+.. rst-class:: classref-reftable-group
+
+Properties
+----------
+
+.. table::
+   :widths: auto
+
+   +-----------------------------------------------+------+-------------------------------------------------------------------+
+   | :ref:`TrackerType<enum_XRServer_TrackerType>` | type | ``2`` (overrides :ref:`XRTracker<class_XRTracker_property_type>`) |
+   +-----------------------------------------------+------+-------------------------------------------------------------------+
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`
+.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)`
+.. |void| replace:: :abbr:`void (No return value.)`

+ 6 - 6
classes/class_xrfacemodifier3d.rst

@@ -42,11 +42,11 @@ Properties
 .. table::
    :widths: auto
 
-   +-------------------------------------+-------------------------------------------------------------------+-------------------+
-   | :ref:`StringName<class_StringName>` | :ref:`face_tracker<class_XRFaceModifier3D_property_face_tracker>` | ``&"/user/head"`` |
-   +-------------------------------------+-------------------------------------------------------------------+-------------------+
-   | :ref:`NodePath<class_NodePath>`     | :ref:`target<class_XRFaceModifier3D_property_target>`             | ``NodePath("")``  |
-   +-------------------------------------+-------------------------------------------------------------------+-------------------+
+   +-------------------------------------+-------------------------------------------------------------------+---------------------------+
+   | :ref:`StringName<class_StringName>` | :ref:`face_tracker<class_XRFaceModifier3D_property_face_tracker>` | ``&"/user/face_tracker"`` |
+   +-------------------------------------+-------------------------------------------------------------------+---------------------------+
+   | :ref:`NodePath<class_NodePath>`     | :ref:`target<class_XRFaceModifier3D_property_target>`             | ``NodePath("")``          |
+   +-------------------------------------+-------------------------------------------------------------------+---------------------------+
 
 .. rst-class:: classref-section-separator
 
@@ -61,7 +61,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`StringName<class_StringName>` **face_tracker** = ``&"/user/head"``
+:ref:`StringName<class_StringName>` **face_tracker** = ``&"/user/face_tracker"``
 
 .. rst-class:: classref-property-setget
 

+ 6 - 4
classes/class_xrfacetracker.rst

@@ -12,7 +12,7 @@ XRFaceTracker
 
 **Experimental:** This class may be changed or removed in future versions.
 
-**Inherits:** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`XRTracker<class_XRTracker>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 A tracked face.
 
@@ -40,9 +40,11 @@ Properties
 .. table::
    :widths: auto
 
-   +-----------------------------------------------------+----------------------------------------------------------------+--------------------------+
-   | :ref:`PackedFloat32Array<class_PackedFloat32Array>` | :ref:`blend_shapes<class_XRFaceTracker_property_blend_shapes>` | ``PackedFloat32Array()`` |
-   +-----------------------------------------------------+----------------------------------------------------------------+--------------------------+
+   +-----------------------------------------------------+----------------------------------------------------------------+--------------------------------------------------------------------+
+   | :ref:`PackedFloat32Array<class_PackedFloat32Array>` | :ref:`blend_shapes<class_XRFaceTracker_property_blend_shapes>` | ``PackedFloat32Array()``                                           |
+   +-----------------------------------------------------+----------------------------------------------------------------+--------------------------------------------------------------------+
+   | :ref:`TrackerType<enum_XRServer_TrackerType>`       | type                                                           | ``64`` (overrides :ref:`XRTracker<class_XRTracker_property_type>`) |
+   +-----------------------------------------------------+----------------------------------------------------------------+--------------------------------------------------------------------+
 
 .. rst-class:: classref-reftable-group
 

+ 8 - 8
classes/class_xrhandmodifier3d.rst

@@ -19,9 +19,9 @@ A node for driving hand meshes from :ref:`XRHandTracker<class_XRHandTracker>` da
 Description
 -----------
 
-This node uses hand tracking data from a :ref:`XRHandTracker<class_XRHandTracker>` to animate the skeleton of a hand mesh.
+This node uses hand tracking data from an :ref:`XRHandTracker<class_XRHandTracker>` to pose the skeleton of a hand mesh.
 
-This node positions itself at the :ref:`XRHandTracker.HAND_JOINT_PALM<class_XRHandTracker_constant_HAND_JOINT_PALM>` position and scales itself to :ref:`XRServer.world_scale<class_XRServer_property_world_scale>`. Adding the hand model as a child of this node will result in the model being positioned and scaled correctly for XR experiences.
+Positioning of hands is performed by creating an :ref:`XRNode3D<class_XRNode3D>` ancestor of the hand mesh driven by the same :ref:`XRHandTracker<class_XRHandTracker>`.
 
 The hand tracking position-data is scaled by :ref:`Skeleton3D.motion_scale<class_Skeleton3D_property_motion_scale>` when applied to the skeleton, which can be used to adjust the tracked hand to match the scale of the hand model.
 
@@ -40,11 +40,11 @@ Properties
 .. table::
    :widths: auto
 
-   +-----------------------------------------------------+-------------------------------------------------------------------+-------------------+
-   | :ref:`BoneUpdate<enum_XRHandModifier3D_BoneUpdate>` | :ref:`bone_update<class_XRHandModifier3D_property_bone_update>`   | ``0``             |
-   +-----------------------------------------------------+-------------------------------------------------------------------+-------------------+
-   | :ref:`StringName<class_StringName>`                 | :ref:`hand_tracker<class_XRHandModifier3D_property_hand_tracker>` | ``&"/user/left"`` |
-   +-----------------------------------------------------+-------------------------------------------------------------------+-------------------+
+   +-----------------------------------------------------+-------------------------------------------------------------------+--------------------------------+
+   | :ref:`BoneUpdate<enum_XRHandModifier3D_BoneUpdate>` | :ref:`bone_update<class_XRHandModifier3D_property_bone_update>`   | ``0``                          |
+   +-----------------------------------------------------+-------------------------------------------------------------------+--------------------------------+
+   | :ref:`StringName<class_StringName>`                 | :ref:`hand_tracker<class_XRHandModifier3D_property_hand_tracker>` | ``&"/user/hand_tracker/left"`` |
+   +-----------------------------------------------------+-------------------------------------------------------------------+--------------------------------+
 
 .. rst-class:: classref-section-separator
 
@@ -115,7 +115,7 @@ Specifies the type of updates to perform on the bones.
 
 .. rst-class:: classref-property
 
-:ref:`StringName<class_StringName>` **hand_tracker** = ``&"/user/left"``
+:ref:`StringName<class_StringName>` **hand_tracker** = ``&"/user/hand_tracker/left"``
 
 .. rst-class:: classref-property-setget
 

+ 10 - 59
classes/class_xrhandtracker.rst

@@ -10,7 +10,7 @@
 XRHandTracker
 =============
 
-**Inherits:** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`XRPositionalTracker<class_XRPositionalTracker>` **<** :ref:`XRTracker<class_XRTracker>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 A tracked hand in XR.
 
@@ -38,13 +38,15 @@ Properties
 .. table::
    :widths: auto
 
-   +------------------------------------------------------------------+--------------------------------------------------------------------------------+-----------+
-   | :ref:`Hand<enum_XRHandTracker_Hand>`                             | :ref:`hand<class_XRHandTracker_property_hand>`                                 | ``0``     |
-   +------------------------------------------------------------------+--------------------------------------------------------------------------------+-----------+
-   | :ref:`HandTrackingSource<enum_XRHandTracker_HandTrackingSource>` | :ref:`hand_tracking_source<class_XRHandTracker_property_hand_tracking_source>` | ``0``     |
-   +------------------------------------------------------------------+--------------------------------------------------------------------------------+-----------+
-   | :ref:`bool<class_bool>`                                          | :ref:`has_tracking_data<class_XRHandTracker_property_has_tracking_data>`       | ``false`` |
-   +------------------------------------------------------------------+--------------------------------------------------------------------------------+-----------+
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------+
+   | :ref:`TrackerHand<enum_XRPositionalTracker_TrackerHand>`         | hand                                                                           | ``1`` (overrides :ref:`XRPositionalTracker<class_XRPositionalTracker_property_hand>`) |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------+
+   | :ref:`HandTrackingSource<enum_XRHandTracker_HandTrackingSource>` | :ref:`hand_tracking_source<class_XRHandTracker_property_hand_tracking_source>` | ``0``                                                                                 |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                                          | :ref:`has_tracking_data<class_XRHandTracker_property_has_tracking_data>`       | ``false``                                                                             |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------+
+   | :ref:`TrackerType<enum_XRServer_TrackerType>`                    | type                                                                           | ``16`` (overrides :ref:`XRTracker<class_XRTracker_property_type>`)                    |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------+
 
 .. rst-class:: classref-reftable-group
 
@@ -85,40 +87,6 @@ Methods
 Enumerations
 ------------
 
-.. _enum_XRHandTracker_Hand:
-
-.. rst-class:: classref-enumeration
-
-enum **Hand**:
-
-.. _class_XRHandTracker_constant_HAND_LEFT:
-
-.. rst-class:: classref-enumeration-constant
-
-:ref:`Hand<enum_XRHandTracker_Hand>` **HAND_LEFT** = ``0``
-
-A left hand.
-
-.. _class_XRHandTracker_constant_HAND_RIGHT:
-
-.. rst-class:: classref-enumeration-constant
-
-:ref:`Hand<enum_XRHandTracker_Hand>` **HAND_RIGHT** = ``1``
-
-A right hand.
-
-.. _class_XRHandTracker_constant_HAND_MAX:
-
-.. rst-class:: classref-enumeration-constant
-
-:ref:`Hand<enum_XRHandTracker_Hand>` **HAND_MAX** = ``2``
-
-Represents the size of the :ref:`Hand<enum_XRHandTracker_Hand>` enum.
-
-.. rst-class:: classref-item-separator
-
-----
-
 .. _enum_XRHandTracker_HandTrackingSource:
 
 .. rst-class:: classref-enumeration
@@ -450,23 +418,6 @@ The hand joint's angular velocity data is valid.
 Property Descriptions
 ---------------------
 
-.. _class_XRHandTracker_property_hand:
-
-.. rst-class:: classref-property
-
-:ref:`Hand<enum_XRHandTracker_Hand>` **hand** = ``0``
-
-.. rst-class:: classref-property-setget
-
-- |void| **set_hand**\ (\ value\: :ref:`Hand<enum_XRHandTracker_Hand>`\ )
-- :ref:`Hand<enum_XRHandTracker_Hand>` **get_hand**\ (\ )
-
-The type of hand.
-
-.. rst-class:: classref-item-separator
-
-----
-
 .. _class_XRHandTracker_property_hand_tracking_source:
 
 .. rst-class:: classref-property

+ 24 - 5
classes/class_xrnode3d.rst

@@ -38,11 +38,13 @@ Properties
 .. table::
    :widths: auto
 
-   +-------------------------------------+-------------------------------------------------+----------------+
-   | :ref:`StringName<class_StringName>` | :ref:`pose<class_XRNode3D_property_pose>`       | ``&"default"`` |
-   +-------------------------------------+-------------------------------------------------+----------------+
-   | :ref:`StringName<class_StringName>` | :ref:`tracker<class_XRNode3D_property_tracker>` | ``&""``        |
-   +-------------------------------------+-------------------------------------------------+----------------+
+   +-------------------------------------+---------------------------------------------------------------------+----------------+
+   | :ref:`StringName<class_StringName>` | :ref:`pose<class_XRNode3D_property_pose>`                           | ``&"default"`` |
+   +-------------------------------------+---------------------------------------------------------------------+----------------+
+   | :ref:`bool<class_bool>`             | :ref:`show_when_tracked<class_XRNode3D_property_show_when_tracked>` | ``false``      |
+   +-------------------------------------+---------------------------------------------------------------------+----------------+
+   | :ref:`StringName<class_StringName>` | :ref:`tracker<class_XRNode3D_property_tracker>`                     | ``&""``        |
+   +-------------------------------------+---------------------------------------------------------------------+----------------+
 
 .. rst-class:: classref-reftable-group
 
@@ -107,6 +109,23 @@ Godot defines number of standard pose names such as ``aim`` and ``grip`` but oth
 
 ----
 
+.. _class_XRNode3D_property_show_when_tracked:
+
+.. rst-class:: classref-property
+
+:ref:`bool<class_bool>` **show_when_tracked** = ``false``
+
+.. rst-class:: classref-property-setget
+
+- |void| **set_show_when_tracked**\ (\ value\: :ref:`bool<class_bool>`\ )
+- :ref:`bool<class_bool>` **get_show_when_tracked**\ (\ )
+
+Enables showing the node when tracking starts, and hiding the node when tracking is lost.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_XRNode3D_property_tracker:
 
 .. rst-class:: classref-property

+ 21 - 68
classes/class_xrpositionaltracker.rst

@@ -10,7 +10,9 @@
 XRPositionalTracker
 ===================
 
-**Inherits:** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`XRTracker<class_XRTracker>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
+
+**Inherited By:** :ref:`XRBodyTracker<class_XRBodyTracker>`, :ref:`XRControllerTracker<class_XRControllerTracker>`, :ref:`XRHandTracker<class_XRHandTracker>`
 
 A tracked object.
 
@@ -23,7 +25,7 @@ An instance of this object represents a device that is tracked, such as a contro
 
 As controllers are turned on and the :ref:`XRInterface<class_XRInterface>` detects them, instances of this object are automatically added to this list of active tracking objects accessible through the :ref:`XRServer<class_XRServer>`.
 
-The :ref:`XRController3D<class_XRController3D>` and :ref:`XRAnchor3D<class_XRAnchor3D>` both consume objects of this type and should be used in your project. The positional trackers are just under-the-hood objects that make this all work. These are mostly exposed so that GDExtension-based interfaces can interact with them.
+The :ref:`XRNode3D<class_XRNode3D>` and :ref:`XRAnchor3D<class_XRAnchor3D>` both consume objects of this type and should be used in your project. The positional trackers are just under-the-hood objects that make this all work. These are mostly exposed so that GDExtension-based interfaces can interact with them.
 
 .. rst-class:: classref-introduction-group
 
@@ -40,17 +42,11 @@ Properties
 .. table::
    :widths: auto
 
-   +----------------------------------------------------------+--------------------------------------------------------------------+----------------+
-   | :ref:`String<class_String>`                              | :ref:`description<class_XRPositionalTracker_property_description>` | ``""``         |
-   +----------------------------------------------------------+--------------------------------------------------------------------+----------------+
-   | :ref:`TrackerHand<enum_XRPositionalTracker_TrackerHand>` | :ref:`hand<class_XRPositionalTracker_property_hand>`               | ``0``          |
-   +----------------------------------------------------------+--------------------------------------------------------------------+----------------+
-   | :ref:`StringName<class_StringName>`                      | :ref:`name<class_XRPositionalTracker_property_name>`               | ``&"Unknown"`` |
-   +----------------------------------------------------------+--------------------------------------------------------------------+----------------+
-   | :ref:`String<class_String>`                              | :ref:`profile<class_XRPositionalTracker_property_profile>`         | ``""``         |
-   +----------------------------------------------------------+--------------------------------------------------------------------+----------------+
-   | :ref:`TrackerType<enum_XRServer_TrackerType>`            | :ref:`type<class_XRPositionalTracker_property_type>`               | ``128``        |
-   +----------------------------------------------------------+--------------------------------------------------------------------+----------------+
+   +----------------------------------------------------------+------------------------------------------------------------+--------+
+   | :ref:`TrackerHand<enum_XRPositionalTracker_TrackerHand>` | :ref:`hand<class_XRPositionalTracker_property_hand>`       | ``0``  |
+   +----------------------------------------------------------+------------------------------------------------------------+--------+
+   | :ref:`String<class_String>`                              | :ref:`profile<class_XRPositionalTracker_property_profile>` | ``""`` |
+   +----------------------------------------------------------+------------------------------------------------------------+--------+
 
 .. rst-class:: classref-reftable-group
 
@@ -202,6 +198,14 @@ This tracker is the left hand controller.
 
 This tracker is the right hand controller.
 
+.. _class_XRPositionalTracker_constant_TRACKER_HAND_MAX:
+
+.. rst-class:: classref-enumeration-constant
+
+:ref:`TrackerHand<enum_XRPositionalTracker_TrackerHand>` **TRACKER_HAND_MAX** = ``3``
+
+Represents the size of the :ref:`TrackerHand<enum_XRPositionalTracker_TrackerHand>` enum.
+
 .. rst-class:: classref-section-separator
 
 ----
@@ -211,23 +215,6 @@ This tracker is the right hand controller.
 Property Descriptions
 ---------------------
 
-.. _class_XRPositionalTracker_property_description:
-
-.. rst-class:: classref-property
-
-:ref:`String<class_String>` **description** = ``""``
-
-.. rst-class:: classref-property-setget
-
-- |void| **set_tracker_desc**\ (\ value\: :ref:`String<class_String>`\ )
-- :ref:`String<class_String>` **get_tracker_desc**\ (\ )
-
-The description of this tracker.
-
-.. rst-class:: classref-item-separator
-
-----
-
 .. _class_XRPositionalTracker_property_hand:
 
 .. rst-class:: classref-property
@@ -245,27 +232,6 @@ Defines which hand this tracker relates to.
 
 ----
 
-.. _class_XRPositionalTracker_property_name:
-
-.. rst-class:: classref-property
-
-:ref:`StringName<class_StringName>` **name** = ``&"Unknown"``
-
-.. rst-class:: classref-property-setget
-
-- |void| **set_tracker_name**\ (\ value\: :ref:`StringName<class_StringName>`\ )
-- :ref:`StringName<class_StringName>` **get_tracker_name**\ (\ )
-
-The unique name of this tracker. The trackers that are available differ between various XR runtimes and can often be configured by the user. Godot maintains a number of reserved names that it expects the :ref:`XRInterface<class_XRInterface>` to implement if applicable:
-
-- ``left_hand`` identifies the controller held in the players left hand
-
-- ``right_hand`` identifies the controller held in the players right hand
-
-.. rst-class:: classref-item-separator
-
-----
-
 .. _class_XRPositionalTracker_property_profile:
 
 .. rst-class:: classref-property
@@ -279,23 +245,6 @@ The unique name of this tracker. The trackers that are available differ between
 
 The profile associated with this tracker, interface dependent but will indicate the type of controller being tracked.
 
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_XRPositionalTracker_property_type:
-
-.. rst-class:: classref-property
-
-:ref:`TrackerType<enum_XRServer_TrackerType>` **type** = ``128``
-
-.. rst-class:: classref-property-setget
-
-- |void| **set_tracker_type**\ (\ value\: :ref:`TrackerType<enum_XRServer_TrackerType>`\ )
-- :ref:`TrackerType<enum_XRServer_TrackerType>` **get_tracker_type**\ (\ )
-
-The type of tracker.
-
 .. rst-class:: classref-section-separator
 
 ----
@@ -311,6 +260,8 @@ Method Descriptions
 
 :ref:`Variant<class_Variant>` **get_input**\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const|
 
+**Deprecated:** Use through :ref:`XRControllerTracker<class_XRControllerTracker>`.
+
 Returns an input for this tracker. It can return a boolean, float or :ref:`Vector2<class_Vector2>` value depending on whether the input is a button, trigger or thumbstick/thumbpad.
 
 .. rst-class:: classref-item-separator
@@ -359,6 +310,8 @@ Marks this pose as invalid, we don't clear the last reported state but it allows
 
 |void| **set_input**\ (\ name\: :ref:`StringName<class_StringName>`, value\: :ref:`Variant<class_Variant>`\ )
 
+**Deprecated:** Use through :ref:`XRControllerTracker<class_XRControllerTracker>`.
+
 Changes the value for the given input. This method is called by a :ref:`XRInterface<class_XRInterface>` implementation and should not be used directly.
 
 .. rst-class:: classref-item-separator

+ 58 - 310
classes/class_xrserver.rst

@@ -52,59 +52,35 @@ Methods
 .. table::
    :widths: auto
 
-   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                           | :ref:`add_body_tracker<class_XRServer_method_add_body_tracker>`\ (\ tracker_name\: :ref:`StringName<class_StringName>`, body_tracker\: :ref:`XRBodyTracker<class_XRBodyTracker>`\ ) |
-   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                           | :ref:`add_face_tracker<class_XRServer_method_add_face_tracker>`\ (\ tracker_name\: :ref:`StringName<class_StringName>`, face_tracker\: :ref:`XRFaceTracker<class_XRFaceTracker>`\ ) |
-   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                           | :ref:`add_hand_tracker<class_XRServer_method_add_hand_tracker>`\ (\ tracker_name\: :ref:`StringName<class_StringName>`, hand_tracker\: :ref:`XRHandTracker<class_XRHandTracker>`\ ) |
-   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                           | :ref:`add_interface<class_XRServer_method_add_interface>`\ (\ interface\: :ref:`XRInterface<class_XRInterface>`\ )                                                                  |
-   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                           | :ref:`add_tracker<class_XRServer_method_add_tracker>`\ (\ tracker\: :ref:`XRPositionalTracker<class_XRPositionalTracker>`\ )                                                        |
-   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                           | :ref:`center_on_hmd<class_XRServer_method_center_on_hmd>`\ (\ rotation_mode\: :ref:`RotationMode<enum_XRServer_RotationMode>`, keep_height\: :ref:`bool<class_bool>`\ )             |
-   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`Transform3D<class_Transform3D>`                            | :ref:`clear_reference_frame<class_XRServer_method_clear_reference_frame>`\ (\ ) |const|                                                                                             |
-   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`XRInterface<class_XRInterface>`                            | :ref:`find_interface<class_XRServer_method_find_interface>`\ (\ name\: :ref:`String<class_String>`\ ) |const|                                                                       |
-   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`XRBodyTracker<class_XRBodyTracker>`                        | :ref:`get_body_tracker<class_XRServer_method_get_body_tracker>`\ (\ tracker_name\: :ref:`StringName<class_StringName>`\ ) |const|                                                   |
-   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`Dictionary<class_Dictionary>`                              | :ref:`get_body_trackers<class_XRServer_method_get_body_trackers>`\ (\ ) |const|                                                                                                     |
-   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`XRFaceTracker<class_XRFaceTracker>`                        | :ref:`get_face_tracker<class_XRServer_method_get_face_tracker>`\ (\ tracker_name\: :ref:`StringName<class_StringName>`\ ) |const|                                                   |
-   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`Dictionary<class_Dictionary>`                              | :ref:`get_face_trackers<class_XRServer_method_get_face_trackers>`\ (\ ) |const|                                                                                                     |
-   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`XRHandTracker<class_XRHandTracker>`                        | :ref:`get_hand_tracker<class_XRServer_method_get_hand_tracker>`\ (\ tracker_name\: :ref:`StringName<class_StringName>`\ ) |const|                                                   |
-   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`Dictionary<class_Dictionary>`                              | :ref:`get_hand_trackers<class_XRServer_method_get_hand_trackers>`\ (\ ) |const|                                                                                                     |
-   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`Transform3D<class_Transform3D>`                            | :ref:`get_hmd_transform<class_XRServer_method_get_hmd_transform>`\ (\ )                                                                                                             |
-   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`XRInterface<class_XRInterface>`                            | :ref:`get_interface<class_XRServer_method_get_interface>`\ (\ idx\: :ref:`int<class_int>`\ ) |const|                                                                                |
-   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`int<class_int>`                                            | :ref:`get_interface_count<class_XRServer_method_get_interface_count>`\ (\ ) |const|                                                                                                 |
-   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`Array<class_Array>`\[:ref:`Dictionary<class_Dictionary>`\] | :ref:`get_interfaces<class_XRServer_method_get_interfaces>`\ (\ ) |const|                                                                                                           |
-   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`Transform3D<class_Transform3D>`                            | :ref:`get_reference_frame<class_XRServer_method_get_reference_frame>`\ (\ ) |const|                                                                                                 |
-   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`XRPositionalTracker<class_XRPositionalTracker>`            | :ref:`get_tracker<class_XRServer_method_get_tracker>`\ (\ tracker_name\: :ref:`StringName<class_StringName>`\ ) |const|                                                             |
-   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`Dictionary<class_Dictionary>`                              | :ref:`get_trackers<class_XRServer_method_get_trackers>`\ (\ tracker_types\: :ref:`int<class_int>`\ )                                                                                |
-   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                           | :ref:`remove_body_tracker<class_XRServer_method_remove_body_tracker>`\ (\ tracker_name\: :ref:`StringName<class_StringName>`\ )                                                     |
-   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                           | :ref:`remove_face_tracker<class_XRServer_method_remove_face_tracker>`\ (\ tracker_name\: :ref:`StringName<class_StringName>`\ )                                                     |
-   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                           | :ref:`remove_hand_tracker<class_XRServer_method_remove_hand_tracker>`\ (\ tracker_name\: :ref:`StringName<class_StringName>`\ )                                                     |
-   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                           | :ref:`remove_interface<class_XRServer_method_remove_interface>`\ (\ interface\: :ref:`XRInterface<class_XRInterface>`\ )                                                            |
-   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                           | :ref:`remove_tracker<class_XRServer_method_remove_tracker>`\ (\ tracker\: :ref:`XRPositionalTracker<class_XRPositionalTracker>`\ )                                                  |
-   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                           | :ref:`add_interface<class_XRServer_method_add_interface>`\ (\ interface\: :ref:`XRInterface<class_XRInterface>`\ )                                                      |
+   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                           | :ref:`add_tracker<class_XRServer_method_add_tracker>`\ (\ tracker\: :ref:`XRTracker<class_XRTracker>`\ )                                                                |
+   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                           | :ref:`center_on_hmd<class_XRServer_method_center_on_hmd>`\ (\ rotation_mode\: :ref:`RotationMode<enum_XRServer_RotationMode>`, keep_height\: :ref:`bool<class_bool>`\ ) |
+   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`Transform3D<class_Transform3D>`                            | :ref:`clear_reference_frame<class_XRServer_method_clear_reference_frame>`\ (\ ) |const|                                                                                 |
+   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`XRInterface<class_XRInterface>`                            | :ref:`find_interface<class_XRServer_method_find_interface>`\ (\ name\: :ref:`String<class_String>`\ ) |const|                                                           |
+   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`Transform3D<class_Transform3D>`                            | :ref:`get_hmd_transform<class_XRServer_method_get_hmd_transform>`\ (\ )                                                                                                 |
+   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`XRInterface<class_XRInterface>`                            | :ref:`get_interface<class_XRServer_method_get_interface>`\ (\ idx\: :ref:`int<class_int>`\ ) |const|                                                                    |
+   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`int<class_int>`                                            | :ref:`get_interface_count<class_XRServer_method_get_interface_count>`\ (\ ) |const|                                                                                     |
+   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`Array<class_Array>`\[:ref:`Dictionary<class_Dictionary>`\] | :ref:`get_interfaces<class_XRServer_method_get_interfaces>`\ (\ ) |const|                                                                                               |
+   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`Transform3D<class_Transform3D>`                            | :ref:`get_reference_frame<class_XRServer_method_get_reference_frame>`\ (\ ) |const|                                                                                     |
+   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`XRTracker<class_XRTracker>`                                | :ref:`get_tracker<class_XRServer_method_get_tracker>`\ (\ tracker_name\: :ref:`StringName<class_StringName>`\ ) |const|                                                 |
+   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`Dictionary<class_Dictionary>`                              | :ref:`get_trackers<class_XRServer_method_get_trackers>`\ (\ tracker_types\: :ref:`int<class_int>`\ )                                                                    |
+   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                           | :ref:`remove_interface<class_XRServer_method_remove_interface>`\ (\ interface\: :ref:`XRInterface<class_XRInterface>`\ )                                                |
+   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                           | :ref:`remove_tracker<class_XRServer_method_remove_tracker>`\ (\ tracker\: :ref:`XRTracker<class_XRTracker>`\ )                                                          |
+   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 .. rst-class:: classref-section-separator
 
@@ -115,114 +91,6 @@ Methods
 Signals
 -------
 
-.. _class_XRServer_signal_body_tracker_added:
-
-.. rst-class:: classref-signal
-
-**body_tracker_added**\ (\ tracker_name\: :ref:`StringName<class_StringName>`, body_tracker\: :ref:`XRBodyTracker<class_XRBodyTracker>`\ )
-
-Emitted when a new body tracker is added.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_XRServer_signal_body_tracker_removed:
-
-.. rst-class:: classref-signal
-
-**body_tracker_removed**\ (\ tracker_name\: :ref:`StringName<class_StringName>`\ )
-
-Emitted when a body tracker is removed.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_XRServer_signal_body_tracker_updated:
-
-.. rst-class:: classref-signal
-
-**body_tracker_updated**\ (\ tracker_name\: :ref:`StringName<class_StringName>`, body_tracker\: :ref:`XRBodyTracker<class_XRBodyTracker>`\ )
-
-Emitted when an existing body tracker is updated.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_XRServer_signal_face_tracker_added:
-
-.. rst-class:: classref-signal
-
-**face_tracker_added**\ (\ tracker_name\: :ref:`StringName<class_StringName>`, face_tracker\: :ref:`XRFaceTracker<class_XRFaceTracker>`\ )
-
-Emitted when a new face tracker is added.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_XRServer_signal_face_tracker_removed:
-
-.. rst-class:: classref-signal
-
-**face_tracker_removed**\ (\ tracker_name\: :ref:`StringName<class_StringName>`\ )
-
-Emitted when a face tracker is removed.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_XRServer_signal_face_tracker_updated:
-
-.. rst-class:: classref-signal
-
-**face_tracker_updated**\ (\ tracker_name\: :ref:`StringName<class_StringName>`, face_tracker\: :ref:`XRFaceTracker<class_XRFaceTracker>`\ )
-
-Emitted when an existing face tracker is updated.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_XRServer_signal_hand_tracker_added:
-
-.. rst-class:: classref-signal
-
-**hand_tracker_added**\ (\ tracker_name\: :ref:`StringName<class_StringName>`, hand_tracker\: :ref:`XRHandTracker<class_XRHandTracker>`\ )
-
-Emitted when a new hand tracker is added.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_XRServer_signal_hand_tracker_removed:
-
-.. rst-class:: classref-signal
-
-**hand_tracker_removed**\ (\ tracker_name\: :ref:`StringName<class_StringName>`\ )
-
-Emitted when a hand tracker is removed.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_XRServer_signal_hand_tracker_updated:
-
-.. rst-class:: classref-signal
-
-**hand_tracker_updated**\ (\ tracker_name\: :ref:`StringName<class_StringName>`, hand_tracker\: :ref:`XRHandTracker<class_XRHandTracker>`\ )
-
-Emitted when an existing hand tracker is updated.
-
-.. rst-class:: classref-item-separator
-
-----
-
 .. _class_XRServer_signal_interface_added:
 
 .. rst-class:: classref-signal
@@ -326,6 +194,30 @@ The tracker tracks the location of a base station.
 
 The tracker tracks the location and size of an AR anchor.
 
+.. _class_XRServer_constant_TRACKER_HAND:
+
+.. rst-class:: classref-enumeration-constant
+
+:ref:`TrackerType<enum_XRServer_TrackerType>` **TRACKER_HAND** = ``16``
+
+The tracker tracks the location and joints of a hand.
+
+.. _class_XRServer_constant_TRACKER_BODY:
+
+.. rst-class:: classref-enumeration-constant
+
+:ref:`TrackerType<enum_XRServer_TrackerType>` **TRACKER_BODY** = ``32``
+
+The tracker tracks the location and joints of a body.
+
+.. _class_XRServer_constant_TRACKER_FACE:
+
+.. rst-class:: classref-enumeration-constant
+
+:ref:`TrackerType<enum_XRServer_TrackerType>` **TRACKER_FACE** = ``64``
+
+The tracker tracks the expressions of a face.
+
 .. _class_XRServer_constant_TRACKER_ANY_KNOWN:
 
 .. rst-class:: classref-enumeration-constant
@@ -451,42 +343,6 @@ The scale of the game world compared to the real world. By default, most AR/VR p
 Method Descriptions
 -------------------
 
-.. _class_XRServer_method_add_body_tracker:
-
-.. rst-class:: classref-method
-
-|void| **add_body_tracker**\ (\ tracker_name\: :ref:`StringName<class_StringName>`, body_tracker\: :ref:`XRBodyTracker<class_XRBodyTracker>`\ )
-
-Registers a new :ref:`XRBodyTracker<class_XRBodyTracker>` that tracks the joints of a body.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_XRServer_method_add_face_tracker:
-
-.. rst-class:: classref-method
-
-|void| **add_face_tracker**\ (\ tracker_name\: :ref:`StringName<class_StringName>`, face_tracker\: :ref:`XRFaceTracker<class_XRFaceTracker>`\ )
-
-Registers a new :ref:`XRFaceTracker<class_XRFaceTracker>` that tracks the blend shapes of a face.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_XRServer_method_add_hand_tracker:
-
-.. rst-class:: classref-method
-
-|void| **add_hand_tracker**\ (\ tracker_name\: :ref:`StringName<class_StringName>`, hand_tracker\: :ref:`XRHandTracker<class_XRHandTracker>`\ )
-
-Registers a new :ref:`XRHandTracker<class_XRHandTracker>` that tracks the joints of a hand.
-
-.. rst-class:: classref-item-separator
-
-----
-
 .. _class_XRServer_method_add_interface:
 
 .. rst-class:: classref-method
@@ -503,9 +359,9 @@ Registers an :ref:`XRInterface<class_XRInterface>` object.
 
 .. rst-class:: classref-method
 
-|void| **add_tracker**\ (\ tracker\: :ref:`XRPositionalTracker<class_XRPositionalTracker>`\ )
+|void| **add_tracker**\ (\ tracker\: :ref:`XRTracker<class_XRTracker>`\ )
 
-Registers a new :ref:`XRPositionalTracker<class_XRPositionalTracker>` that tracks a spatial location in real space.
+Registers a new :ref:`XRTracker<class_XRTracker>` that tracks a physical object.
 
 .. rst-class:: classref-item-separator
 
@@ -557,78 +413,6 @@ Finds an interface by its ``name``. For example, if your project uses capabiliti
 
 ----
 
-.. _class_XRServer_method_get_body_tracker:
-
-.. rst-class:: classref-method
-
-:ref:`XRBodyTracker<class_XRBodyTracker>` **get_body_tracker**\ (\ tracker_name\: :ref:`StringName<class_StringName>`\ ) |const|
-
-Returns the :ref:`XRBodyTracker<class_XRBodyTracker>` with the given tracker name.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_XRServer_method_get_body_trackers:
-
-.. rst-class:: classref-method
-
-:ref:`Dictionary<class_Dictionary>` **get_body_trackers**\ (\ ) |const|
-
-Returns a dictionary of the registered body trackers. Each element of the dictionary is a tracker name mapping to the :ref:`XRBodyTracker<class_XRBodyTracker>` instance.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_XRServer_method_get_face_tracker:
-
-.. rst-class:: classref-method
-
-:ref:`XRFaceTracker<class_XRFaceTracker>` **get_face_tracker**\ (\ tracker_name\: :ref:`StringName<class_StringName>`\ ) |const|
-
-Returns the :ref:`XRFaceTracker<class_XRFaceTracker>` with the given tracker name.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_XRServer_method_get_face_trackers:
-
-.. rst-class:: classref-method
-
-:ref:`Dictionary<class_Dictionary>` **get_face_trackers**\ (\ ) |const|
-
-Returns a dictionary of the registered face trackers. Each element of the dictionary is a tracker name mapping to the :ref:`XRFaceTracker<class_XRFaceTracker>` instance.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_XRServer_method_get_hand_tracker:
-
-.. rst-class:: classref-method
-
-:ref:`XRHandTracker<class_XRHandTracker>` **get_hand_tracker**\ (\ tracker_name\: :ref:`StringName<class_StringName>`\ ) |const|
-
-Returns the :ref:`XRHandTracker<class_XRHandTracker>` with the given tracker name.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_XRServer_method_get_hand_trackers:
-
-.. rst-class:: classref-method
-
-:ref:`Dictionary<class_Dictionary>` **get_hand_trackers**\ (\ ) |const|
-
-Returns a dictionary of the registered hand trackers. Each element of the dictionary is a tracker name mapping to the :ref:`XRHandTracker<class_XRHandTracker>` instance.
-
-.. rst-class:: classref-item-separator
-
-----
-
 .. _class_XRServer_method_get_hmd_transform:
 
 .. rst-class:: classref-method
@@ -693,7 +477,7 @@ Returns the reference frame transform. Mostly used internally and exposed for GD
 
 .. rst-class:: classref-method
 
-:ref:`XRPositionalTracker<class_XRPositionalTracker>` **get_tracker**\ (\ tracker_name\: :ref:`StringName<class_StringName>`\ ) |const|
+:ref:`XRTracker<class_XRTracker>` **get_tracker**\ (\ tracker_name\: :ref:`StringName<class_StringName>`\ ) |const|
 
 Returns the positional tracker with the given ``tracker_name``.
 
@@ -713,42 +497,6 @@ Returns a dictionary of trackers for ``tracker_types``.
 
 ----
 
-.. _class_XRServer_method_remove_body_tracker:
-
-.. rst-class:: classref-method
-
-|void| **remove_body_tracker**\ (\ tracker_name\: :ref:`StringName<class_StringName>`\ )
-
-Removes a registered :ref:`XRBodyTracker<class_XRBodyTracker>`.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_XRServer_method_remove_face_tracker:
-
-.. rst-class:: classref-method
-
-|void| **remove_face_tracker**\ (\ tracker_name\: :ref:`StringName<class_StringName>`\ )
-
-Removes a registered :ref:`XRFaceTracker<class_XRFaceTracker>`.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_XRServer_method_remove_hand_tracker:
-
-.. rst-class:: classref-method
-
-|void| **remove_hand_tracker**\ (\ tracker_name\: :ref:`StringName<class_StringName>`\ )
-
-Removes a registered :ref:`XRHandTracker<class_XRHandTracker>`.
-
-.. rst-class:: classref-item-separator
-
-----
-
 .. _class_XRServer_method_remove_interface:
 
 .. rst-class:: classref-method
@@ -765,9 +513,9 @@ Removes this ``interface``.
 
 .. rst-class:: classref-method
 
-|void| **remove_tracker**\ (\ tracker\: :ref:`XRPositionalTracker<class_XRPositionalTracker>`\ )
+|void| **remove_tracker**\ (\ tracker\: :ref:`XRTracker<class_XRTracker>`\ )
 
-Removes this positional ``tracker``.
+Removes this ``tracker``.
 
 .. |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.)`

+ 126 - 0
classes/class_xrtracker.rst

@@ -0,0 +1,126 @@
+: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/XRTracker.xml.
+
+.. _class_XRTracker:
+
+XRTracker
+=========
+
+**Inherits:** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
+
+**Inherited By:** :ref:`XRFaceTracker<class_XRFaceTracker>`, :ref:`XRPositionalTracker<class_XRPositionalTracker>`
+
+A tracked object.
+
+.. rst-class:: classref-introduction-group
+
+Description
+-----------
+
+This object is the base of all XR trackers.
+
+.. rst-class:: classref-introduction-group
+
+Tutorials
+---------
+
+- :doc:`XR documentation index <../tutorials/xr/index>`
+
+.. rst-class:: classref-reftable-group
+
+Properties
+----------
+
+.. table::
+   :widths: auto
+
+   +-----------------------------------------------+----------------------------------------------------------+----------------+
+   | :ref:`String<class_String>`                   | :ref:`description<class_XRTracker_property_description>` | ``""``         |
+   +-----------------------------------------------+----------------------------------------------------------+----------------+
+   | :ref:`StringName<class_StringName>`           | :ref:`name<class_XRTracker_property_name>`               | ``&"Unknown"`` |
+   +-----------------------------------------------+----------------------------------------------------------+----------------+
+   | :ref:`TrackerType<enum_XRServer_TrackerType>` | :ref:`type<class_XRTracker_property_type>`               | ``128``        |
+   +-----------------------------------------------+----------------------------------------------------------+----------------+
+
+.. rst-class:: classref-section-separator
+
+----
+
+.. rst-class:: classref-descriptions-group
+
+Property Descriptions
+---------------------
+
+.. _class_XRTracker_property_description:
+
+.. rst-class:: classref-property
+
+:ref:`String<class_String>` **description** = ``""``
+
+.. rst-class:: classref-property-setget
+
+- |void| **set_tracker_desc**\ (\ value\: :ref:`String<class_String>`\ )
+- :ref:`String<class_String>` **get_tracker_desc**\ (\ )
+
+The description of this tracker.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_XRTracker_property_name:
+
+.. rst-class:: classref-property
+
+:ref:`StringName<class_StringName>` **name** = ``&"Unknown"``
+
+.. rst-class:: classref-property-setget
+
+- |void| **set_tracker_name**\ (\ value\: :ref:`StringName<class_StringName>`\ )
+- :ref:`StringName<class_StringName>` **get_tracker_name**\ (\ )
+
+The unique name of this tracker. The trackers that are available differ between various XR runtimes and can often be configured by the user. Godot maintains a number of reserved names that it expects the :ref:`XRInterface<class_XRInterface>` to implement if applicable:
+
+- ``head`` identifies the :ref:`XRPositionalTracker<class_XRPositionalTracker>` of the players head
+
+- ``left_hand`` identifies the :ref:`XRControllerTracker<class_XRControllerTracker>` in the players left hand
+
+- ``right_hand`` identifies the :ref:`XRControllerTracker<class_XRControllerTracker>` in the players right hand
+
+- ``/user/hand_tracker/left`` identifies the :ref:`XRHandTracker<class_XRHandTracker>` for the players left hand
+
+- ``/user/hand_tracker/right`` identifies the :ref:`XRHandTracker<class_XRHandTracker>` for the players right hand
+
+- ``/user/body_tracker`` identifies the :ref:`XRBodyTracker<class_XRBodyTracker>` for the players body
+
+- ``/user/face_tracker`` identifies the :ref:`XRFaceTracker<class_XRFaceTracker>` for the players face
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_XRTracker_property_type:
+
+.. rst-class:: classref-property
+
+:ref:`TrackerType<enum_XRServer_TrackerType>` **type** = ``128``
+
+.. rst-class:: classref-property-setget
+
+- |void| **set_tracker_type**\ (\ value\: :ref:`TrackerType<enum_XRServer_TrackerType>`\ )
+- :ref:`TrackerType<enum_XRServer_TrackerType>` **get_tracker_type**\ (\ )
+
+The type of tracker.
+
+.. |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.)`
+.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)`
+.. |void| replace:: :abbr:`void (No return value.)`

+ 2 - 0
classes/index.rst

@@ -953,6 +953,7 @@ Other objects
     class_workerthreadpool
     class_xmlparser
     class_xrbodytracker
+    class_xrcontrollertracker
     class_xrfacetracker
     class_xrhandtracker
     class_xrinterface
@@ -960,6 +961,7 @@ Other objects
     class_xrpose
     class_xrpositionaltracker
     class_xrserver
+    class_xrtracker
     class_zippacker
     class_zipreader
 

Some files were not shown because too many files changed in this diff