Browse Source

classref: Sync with current 3.4 branch

Rémi Verschelde 4 years ago
parent
commit
a0ea14e62a
100 changed files with 4357 additions and 920 deletions
  1. 7 3
      classes/[email protected]
  2. 14 0
      classes/class_acceptdialog.rst
  3. 132 0
      classes/class_aescontext.rst
  4. 1 1
      classes/class_animatedsprite3d.rst
  5. 1 1
      classes/class_animation.rst
  6. 23 1
      classes/class_animationplayer.rst
  7. 2 2
      classes/class_animationtree.rst
  8. 15 91
      classes/class_area.rst
  9. 17 93
      classes/class_area2d.rst
  10. 3 3
      classes/class_array.rst
  11. 19 1
      classes/class_arraymesh.rst
  12. 1 1
      classes/class_arvrpositionaltracker.rst
  13. 50 0
      classes/class_arvrserver.rst
  14. 1 1
      classes/class_astar.rst
  15. 10 6
      classes/class_audioeffectpitchshift.rst
  16. 23 5
      classes/class_audioeffectspectrumanalyzer.rst
  17. 19 0
      classes/class_audiostreamgenerator.rst
  18. 18 1
      classes/class_audiostreamgeneratorplayback.rst
  19. 6 2
      classes/class_audiostreamsample.rst
  20. 1 1
      classes/class_bakedlightmap.rst
  21. 24 10
      classes/class_basebutton.rst
  22. 9 0
      classes/class_buttongroup.rst
  23. 8 8
      classes/class_camera.rst
  24. 5 1
      classes/class_camera2d.rst
  25. 8 0
      classes/class_checkbox.rst
  26. 123 39
      classes/class_collisionobject.rst
  27. 87 3
      classes/class_collisionobject2d.rst
  28. 11 7
      classes/class_control.rst
  29. 211 147
      classes/class_cpuparticles.rst
  30. 1 1
      classes/class_cpuparticles2d.rst
  31. 81 1
      classes/class_crypto.rst
  32. 43 9
      classes/class_cryptokey.rst
  33. 1 1
      classes/class_csgbox.rst
  34. 1 1
      classes/class_csgcombiner.rst
  35. 1 1
      classes/class_csgcylinder.rst
  36. 3 1
      classes/class_csgmesh.rst
  37. 1 1
      classes/class_csgpolygon.rst
  38. 1 1
      classes/class_csgprimitive.rst
  39. 1 1
      classes/class_csgshape.rst
  40. 1 1
      classes/class_csgsphere.rst
  41. 1 1
      classes/class_csgtorus.rst
  42. 4 4
      classes/class_csharpscript.rst
  43. 108 0
      classes/class_cullinstance.rst
  44. 5 5
      classes/class_cylindermesh.rst
  45. 1 1
      classes/class_directionallight.rst
  46. 1 1
      classes/class_directory.rst
  47. 1 1
      classes/class_editorimportplugin.rst
  48. 192 0
      classes/class_editorresourcepicker.rst
  49. 1 1
      classes/class_editorsceneimporter.rst
  50. 18 0
      classes/class_editorsceneimportergltf.rst
  51. 47 0
      classes/class_editorscriptpicker.rst
  52. 5 0
      classes/class_editorspinslider.rst
  53. 23 1
      classes/class_engine.rst
  54. 2 2
      classes/class_environment.rst
  55. 1 1
      classes/class_geometryinstance.rst
  56. 2 2
      classes/class_giprobe.rst
  57. 248 0
      classes/class_gltfaccessor.rst
  58. 40 0
      classes/class_gltfanimation.rst
  59. 104 0
      classes/class_gltfbufferview.rst
  60. 88 0
      classes/class_gltfcamera.rst
  61. 18 0
      classes/class_gltfdocument.rst
  62. 120 0
      classes/class_gltflight.rst
  63. 54 0
      classes/class_gltfmesh.rst
  64. 232 0
      classes/class_gltfnode.rst
  65. 118 0
      classes/class_gltfskeleton.rst
  66. 188 0
      classes/class_gltfskin.rst
  67. 100 0
      classes/class_gltfspecgloss.rst
  68. 422 0
      classes/class_gltfstate.rst
  69. 40 0
      classes/class_gltftexture.rst
  70. 72 0
      classes/class_graphedit.rst
  71. 70 8
      classes/class_graphnode.rst
  72. 2 0
      classes/class_hboxcontainer.rst
  73. 1 1
      classes/class_heightmapshape.rst
  74. 106 0
      classes/class_hmaccontext.rst
  75. 65 17
      classes/class_httprequest.rst
  76. 2 2
      classes/class_image.rst
  77. 1 1
      classes/class_immediategeometry.rst
  78. 45 13
      classes/class_inputeventkey.rst
  79. 20 0
      classes/class_ip.rst
  80. 49 3
      classes/class_javascript.rst
  81. 53 0
      classes/class_javascriptobject.rst
  82. 27 9
      classes/class_kinematicbody.rst
  83. 1 1
      classes/class_label.rst
  84. 37 15
      classes/class_light.rst
  85. 16 2
      classes/class_lineedit.rst
  86. 28 24
      classes/class_mesh.rst
  87. 31 17
      classes/class_meshinstance.rst
  88. 1 1
      classes/class_multimesh.rst
  89. 1 1
      classes/class_multimeshinstance.rst
  90. 2 0
      classes/class_nodepath.rst
  91. 18 0
      classes/class_noisetexture.rst
  92. 1 1
      classes/class_object.rst
  93. 1 1
      classes/class_omnilight.rst
  94. 3 3
      classes/class_opensimplexnoise.rst
  95. 77 11
      classes/class_os.rst
  96. 2 0
      classes/class_packedscene.rst
  97. 55 0
      classes/class_packedscenegltf.rst
  98. 1 1
      classes/class_particles.rst
  99. 185 115
      classes/class_particlesmaterial.rst
  100. 216 206
      classes/class_physics2dserver.rst

+ 7 - 3
classes/[email protected]

@@ -220,11 +220,15 @@ Constants
 
 
 - **PI** = **3.141593** --- Constant that represents how many times the diameter of a circle fits around its perimeter. This is equivalent to ``TAU / 2``.
 - **PI** = **3.141593** --- Constant that represents how many times the diameter of a circle fits around its perimeter. This is equivalent to ``TAU / 2``.
 
 
-- **TAU** = **6.283185** --- The circle constant, the circumference of the unit circle in radians.
+- **TAU** = **6.283185** --- The circle constant, the circumference of the unit circle in radians. This is equivalent to ``PI * 2``, or 360 degrees in rotations.
 
 
-- **INF** = **inf** --- Positive infinity. For negative infinity, use -INF.
+- **INF** = **inf** --- Positive floating-point infinity. This is the result of floating-point division when the divisor is ``0.0``. For negative infinity, use ``-INF``. Dividing by ``-0.0`` will result in negative infinity if the numerator is positive, so dividing by ``0.0`` is not the same as dividing by ``-0.0`` (despite ``0.0 == -0.0`` returning ``true``).
 
 
-- **NAN** = **nan** --- "Not a Number", an invalid value. ``NaN`` has special properties, including that it is not equal to itself. It is output by some invalid operations, such as dividing zero by zero.
+**Note:** Numeric infinity is only a concept with floating-point numbers, and has no equivalent for integers. Dividing an integer number by ``0`` will not result in :ref:`INF<class_@GDScript_constant_INF>` and will result in a run-time error instead.
+
+- **NAN** = **nan** --- "Not a Number", an invalid floating-point value. :ref:`NAN<class_@GDScript_constant_NAN>` has special properties, including that it is not equal to itself (``NAN == NAN`` returns ``false``). It is output by some invalid operations, such as dividing floating-point ``0.0`` by ``0.0``.
+
+**Note:** "Not a Number" is only a concept with floating-point numbers, and has no equivalent for integers. Dividing an integer ``0`` by ``0`` will not result in :ref:`NAN<class_@GDScript_constant_NAN>` and will result in a run-time error instead.
 
 
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------

+ 14 - 0
classes/class_acceptdialog.rst

@@ -47,6 +47,8 @@ Methods
 +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                        | :ref:`register_text_enter<class_AcceptDialog_method_register_text_enter>` **(** :ref:`Node<class_Node>` line_edit **)**                                                          |
 | void                        | :ref:`register_text_enter<class_AcceptDialog_method_register_text_enter>` **(** :ref:`Node<class_Node>` line_edit **)**                                                          |
 +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                        | :ref:`remove_button<class_AcceptDialog_method_remove_button>` **(** :ref:`Control<class_Control>` button **)**                                                                   |
++-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 
 Signals
 Signals
 -------
 -------
@@ -127,6 +129,8 @@ Adds a button with label ``text`` and a custom ``action`` to the dialog and retu
 
 
 If ``true``, ``right`` will place the button to the right of any sibling buttons.
 If ``true``, ``right`` will place the button to the right of any sibling buttons.
 
 
+You can use :ref:`remove_button<class_AcceptDialog_method_remove_button>` method to remove a button created with this method from the dialog.
+
 ----
 ----
 
 
 .. _class_AcceptDialog_method_add_cancel:
 .. _class_AcceptDialog_method_add_cancel:
@@ -135,6 +139,8 @@ If ``true``, ``right`` will place the button to the right of any sibling buttons
 
 
 Adds a button with label ``name`` and a cancel action to the dialog and returns the created button.
 Adds a button with label ``name`` and a cancel action to the dialog and returns the created button.
 
 
+You can use :ref:`remove_button<class_AcceptDialog_method_remove_button>` method to remove a button created with this method from the dialog.
+
 ----
 ----
 
 
 .. _class_AcceptDialog_method_get_label:
 .. _class_AcceptDialog_method_get_label:
@@ -159,6 +165,14 @@ Returns the OK :ref:`Button<class_Button>` instance.
 
 
 Registers a :ref:`LineEdit<class_LineEdit>` in the dialog. When the enter key is pressed, the dialog will be accepted.
 Registers a :ref:`LineEdit<class_LineEdit>` in the dialog. When the enter key is pressed, the dialog will be accepted.
 
 
+----
+
+.. _class_AcceptDialog_method_remove_button:
+
+- void **remove_button** **(** :ref:`Control<class_Control>` button **)**
+
+Removes the ``button`` from the dialog. Does NOT free the ``button``. The ``button`` must be a :ref:`Button<class_Button>` added with :ref:`add_button<class_AcceptDialog_method_add_button>` or :ref:`add_cancel<class_AcceptDialog_method_add_cancel>` method. After removal, pressing the ``button`` will no longer emit this dialog's :ref:`custom_action<class_AcceptDialog_signal_custom_action>` signal or cancel this dialog.
+
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |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.)`
 .. |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.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`

+ 132 - 0
classes/class_aescontext.rst

@@ -0,0 +1,132 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the AESContext.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_AESContext:
+
+AESContext
+==========
+
+**Inherits:** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+
+Interface to low level AES encryption features.
+
+Description
+-----------
+
+This class provides access to AES encryption/decryption of raw data. Both AES-ECB and AES-CBC mode are supported.
+
+::
+
+    extends Node
+    
+    var aes = AESContext.new()
+    
+    func _ready():
+        var key = "My secret key!!!" # Key must be either 16 or 32 bytes.
+        var data = "My secret text!!" # Data size must be multiple of 16 bytes, apply padding if needed.
+        # Encrypt ECB
+        aes.start(AESContext.MODE_ECB_ENCRYPT, key.to_utf8())
+        var encrypted = aes.update(data.to_utf8())
+        aes.finish()
+        # Decrypt ECB
+        aes.start(AESContext.MODE_ECB_DECRYPT, key.to_utf8())
+        var decrypted = aes.update(encrypted)
+        aes.finish()
+        # Check ECB
+        assert(decrypted == data.to_utf8())
+    
+        var iv = "My secret iv!!!!" # IV must be of exactly 16 bytes.
+        # Encrypt CBC
+        aes.start(AESContext.MODE_CBC_ENCRYPT, key.to_utf8(), iv.to_utf8())
+        encrypted = aes.update(data.to_utf8())
+        aes.finish()
+        # Decrypt CBC
+        aes.start(AESContext.MODE_CBC_DECRYPT, key.to_utf8(), iv.to_utf8())
+        decrypted = aes.update(encrypted)
+        aes.finish()
+        # Check CBC
+        assert(decrypted == data.to_utf8())
+
+Methods
+-------
+
++-------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                      | :ref:`finish<class_AESContext_method_finish>` **(** **)**                                                                                                                                                     |
++-------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PoolByteArray<class_PoolByteArray>` | :ref:`get_iv_state<class_AESContext_method_get_iv_state>` **(** **)**                                                                                                                                         |
++-------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Error<enum_@GlobalScope_Error>`     | :ref:`start<class_AESContext_method_start>` **(** :ref:`Mode<enum_AESContext_Mode>` mode, :ref:`PoolByteArray<class_PoolByteArray>` key, :ref:`PoolByteArray<class_PoolByteArray>` iv=PoolByteArray(  ) **)** |
++-------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PoolByteArray<class_PoolByteArray>` | :ref:`update<class_AESContext_method_update>` **(** :ref:`PoolByteArray<class_PoolByteArray>` src **)**                                                                                                       |
++-------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+Enumerations
+------------
+
+.. _enum_AESContext_Mode:
+
+.. _class_AESContext_constant_MODE_ECB_ENCRYPT:
+
+.. _class_AESContext_constant_MODE_ECB_DECRYPT:
+
+.. _class_AESContext_constant_MODE_CBC_ENCRYPT:
+
+.. _class_AESContext_constant_MODE_CBC_DECRYPT:
+
+.. _class_AESContext_constant_MODE_MAX:
+
+enum **Mode**:
+
+- **MODE_ECB_ENCRYPT** = **0** --- AES electronic codebook encryption mode.
+
+- **MODE_ECB_DECRYPT** = **1** --- AES electronic codebook decryption mode.
+
+- **MODE_CBC_ENCRYPT** = **2** --- AES cipher blocker chaining encryption mode.
+
+- **MODE_CBC_DECRYPT** = **3** --- AES cipher blocker chaining decryption mode.
+
+- **MODE_MAX** = **4** --- Maximum value for the mode enum.
+
+Method Descriptions
+-------------------
+
+.. _class_AESContext_method_finish:
+
+- void **finish** **(** **)**
+
+Close this AES context so it can be started again. See :ref:`start<class_AESContext_method_start>`.
+
+----
+
+.. _class_AESContext_method_get_iv_state:
+
+- :ref:`PoolByteArray<class_PoolByteArray>` **get_iv_state** **(** **)**
+
+Get the current IV state for this context (IV gets updated when calling :ref:`update<class_AESContext_method_update>`). You normally don't need this function.
+
+Note: This function only makes sense when the context is started with :ref:`MODE_CBC_ENCRYPT<class_AESContext_constant_MODE_CBC_ENCRYPT>` or :ref:`MODE_CBC_DECRYPT<class_AESContext_constant_MODE_CBC_DECRYPT>`.
+
+----
+
+.. _class_AESContext_method_start:
+
+- :ref:`Error<enum_@GlobalScope_Error>` **start** **(** :ref:`Mode<enum_AESContext_Mode>` mode, :ref:`PoolByteArray<class_PoolByteArray>` key, :ref:`PoolByteArray<class_PoolByteArray>` iv=PoolByteArray(  ) **)**
+
+Start the AES context in the given ``mode``. A ``key`` of either 16 or 32 bytes must always be provided, while an ``iv`` (initialization vector) of exactly 16 bytes, is only needed when ``mode`` is either :ref:`MODE_CBC_ENCRYPT<class_AESContext_constant_MODE_CBC_ENCRYPT>` or :ref:`MODE_CBC_DECRYPT<class_AESContext_constant_MODE_CBC_DECRYPT>`.
+
+----
+
+.. _class_AESContext_method_update:
+
+- :ref:`PoolByteArray<class_PoolByteArray>` **update** **(** :ref:`PoolByteArray<class_PoolByteArray>` src **)**
+
+Run the desired operation for this AES context. Will return a :ref:`PoolByteArray<class_PoolByteArray>` containing the result of encrypting (or decrypting) the given ``src``. See :ref:`start<class_AESContext_method_start>` for mode of operation.
+
+Note: The size of ``src`` must be a multiple of 16. Apply some padding if needed.
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`

+ 1 - 1
classes/class_animatedsprite3d.rst

@@ -9,7 +9,7 @@
 AnimatedSprite3D
 AnimatedSprite3D
 ================
 ================
 
 
-**Inherits:** :ref:`SpriteBase3D<class_SpriteBase3D>` **<** :ref:`GeometryInstance<class_GeometryInstance>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`SpriteBase3D<class_SpriteBase3D>` **<** :ref:`GeometryInstance<class_GeometryInstance>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`CullInstance<class_CullInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
 
 2D sprite node in 3D world, that can use multiple 2D textures for animation.
 2D sprite node in 3D world, that can use multiple 2D textures for animation.
 
 

+ 1 - 1
classes/class_animation.rst

@@ -723,7 +723,7 @@ Sets the value of an existing key.
 
 
 - void **track_set_path** **(** :ref:`int<class_int>` track_idx, :ref:`NodePath<class_NodePath>` path **)**
 - void **track_set_path** **(** :ref:`int<class_int>` track_idx, :ref:`NodePath<class_NodePath>` path **)**
 
 
-Sets the path of a track. Paths must be valid scene-tree paths to a node, and must be specified starting from the parent node of the node that will reproduce the animation. Tracks that control properties or bones must append their name after the path, separated by ``":"``.
+Sets the path of a track. Paths must be valid scene-tree paths to a node and must be specified starting from the parent node of the node that will reproduce the animation. Tracks that control properties or bones must append their name after the path, separated by ``":"``.
 
 
 For example, ``"character/skeleton:ankle"`` or ``"character/mesh:transform/local"``.
 For example, ``"character/skeleton:ankle"`` or ``"character/mesh:transform/local"``.
 
 

+ 23 - 1
classes/class_animationplayer.rst

@@ -55,6 +55,8 @@ Properties
 +------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
 +------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
 | :ref:`float<class_float>`                                                    | :ref:`playback_speed<class_AnimationPlayer_property_playback_speed>`                           | ``1.0``            |
 | :ref:`float<class_float>`                                                    | :ref:`playback_speed<class_AnimationPlayer_property_playback_speed>`                           | ``1.0``            |
 +------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
 +------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
+| :ref:`bool<class_bool>`                                                      | :ref:`reset_on_save<class_AnimationPlayer_property_reset_on_save>`                             | ``true``           |
++------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
 | :ref:`NodePath<class_NodePath>`                                              | :ref:`root_node<class_AnimationPlayer_property_root_node>`                                     | ``NodePath("..")`` |
 | :ref:`NodePath<class_NodePath>`                                              | :ref:`root_node<class_AnimationPlayer_property_root_node>`                                     | ``NodePath("..")`` |
 +------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
 +------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
 
 
@@ -114,7 +116,9 @@ Signals
 
 
 - **animation_changed** **(** :ref:`String<class_String>` old_name, :ref:`String<class_String>` new_name **)**
 - **animation_changed** **(** :ref:`String<class_String>` old_name, :ref:`String<class_String>` new_name **)**
 
 
-If the currently being played animation changes, this signal will notify of such change.
+Emitted when a queued animation plays after the previous animation was finished. See :ref:`queue<class_AnimationPlayer_method_queue>`.
+
+**Note:** The signal is not emitted when the animation is changed via :ref:`play<class_AnimationPlayer_method_play>` or from :ref:`AnimationTree<class_AnimationTree>`.
 
 
 ----
 ----
 
 
@@ -326,6 +330,24 @@ The speed scaling ratio. For instance, if this value is 1, then the animation pl
 
 
 ----
 ----
 
 
+.. _class_AnimationPlayer_property_reset_on_save:
+
+- :ref:`bool<class_bool>` **reset_on_save**
+
++-----------+----------------------------------+
+| *Default* | ``true``                         |
++-----------+----------------------------------+
+| *Setter*  | set_reset_on_save_enabled(value) |
++-----------+----------------------------------+
+| *Getter*  | is_reset_on_save_enabled()       |
++-----------+----------------------------------+
+
+This is used by the editor. If set to ``true``, the scene will be saved with the effects of the reset animation applied (as if it had been seeked to time 0), then reverted after saving.
+
+In other words, the saved scene file will contain the "default pose", as defined by the reset animation, if any, with the editor keeping the values that the nodes had before saving.
+
+----
+
 .. _class_AnimationPlayer_property_root_node:
 .. _class_AnimationPlayer_property_root_node:
 
 
 - :ref:`NodePath<class_NodePath>` **root_node**
 - :ref:`NodePath<class_NodePath>` **root_node**

+ 2 - 2
classes/class_animationtree.rst

@@ -135,7 +135,7 @@ The process mode of this ``AnimationTree``. See :ref:`AnimationProcessMode<enum_
 
 
 The path to the Animation track used for root motion. Paths must be valid scene-tree paths to a node, and must be specified starting from the parent node of the node that will reproduce the animation. To specify a track that controls properties or bones, append its name after the path, separated by ``":"``. For example, ``"character/skeleton:ankle"`` or ``"character/mesh:transform/local"``.
 The path to the Animation track used for root motion. Paths must be valid scene-tree paths to a node, and must be specified starting from the parent node of the node that will reproduce the animation. To specify a track that controls properties or bones, append its name after the path, separated by ``":"``. For example, ``"character/skeleton:ankle"`` or ``"character/mesh:transform/local"``.
 
 
-If the track has type :ref:`Animation.TYPE_TRANSFORM<class_Animation_constant_TYPE_TRANSFORM>`, the transformation will be cancelled visually, and the animation will appear to stay in place.
+If the track has type :ref:`Animation.TYPE_TRANSFORM<class_Animation_constant_TYPE_TRANSFORM>`, the transformation will be cancelled visually, and the animation will appear to stay in place. See also :ref:`get_root_motion_transform<class_AnimationTree_method_get_root_motion_transform>` and :ref:`RootMotionView<class_RootMotionView>`.
 
 
 ----
 ----
 
 
@@ -166,7 +166,7 @@ Manually advance the animations by the specified time (in seconds).
 
 
 - :ref:`Transform<class_Transform>` **get_root_motion_transform** **(** **)** |const|
 - :ref:`Transform<class_Transform>` **get_root_motion_transform** **(** **)** |const|
 
 
-Retrieve the motion of the :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>` as a :ref:`Transform<class_Transform>` that can be used elsewhere. If :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>` is not a path to a track of type :ref:`Animation.TYPE_TRANSFORM<class_Animation_constant_TYPE_TRANSFORM>`, returns an identity transformation.
+Retrieve the motion of the :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>` as a :ref:`Transform<class_Transform>` that can be used elsewhere. If :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>` is not a path to a track of type :ref:`Animation.TYPE_TRANSFORM<class_Animation_constant_TYPE_TRANSFORM>`, returns an identity transformation. See also :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>` and :ref:`RootMotionView<class_RootMotionView>`.
 
 
 ----
 ----
 
 

+ 15 - 91
classes/class_area.rst

@@ -11,12 +11,12 @@ Area
 
 
 **Inherits:** :ref:`CollisionObject<class_CollisionObject>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 **Inherits:** :ref:`CollisionObject<class_CollisionObject>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
 
-General-purpose area node for detection and 3D physics influence.
+3D area for detection and physics and audio influence.
 
 
 Description
 Description
 -----------
 -----------
 
 
-3D area that detects :ref:`CollisionObject<class_CollisionObject>` nodes overlapping, entering, or exiting. Can also alter or override local physics parameters (gravity, damping).
+3D area that detects :ref:`CollisionObject<class_CollisionObject>` nodes overlapping, entering, or exiting. Can also alter or override local physics parameters (gravity, damping) and route audio to custom audio buses.
 
 
 Tutorials
 Tutorials
 ---------
 ---------
@@ -35,10 +35,6 @@ Properties
 +-----------------------------------------------+---------------------------------------------------------------------------+-------------------------+
 +-----------------------------------------------+---------------------------------------------------------------------------+-------------------------+
 | :ref:`bool<class_bool>`                       | :ref:`audio_bus_override<class_Area_property_audio_bus_override>`         | ``false``               |
 | :ref:`bool<class_bool>`                       | :ref:`audio_bus_override<class_Area_property_audio_bus_override>`         | ``false``               |
 +-----------------------------------------------+---------------------------------------------------------------------------+-------------------------+
 +-----------------------------------------------+---------------------------------------------------------------------------+-------------------------+
-| :ref:`int<class_int>`                         | :ref:`collision_layer<class_Area_property_collision_layer>`               | ``1``                   |
-+-----------------------------------------------+---------------------------------------------------------------------------+-------------------------+
-| :ref:`int<class_int>`                         | :ref:`collision_mask<class_Area_property_collision_mask>`                 | ``1``                   |
-+-----------------------------------------------+---------------------------------------------------------------------------+-------------------------+
 | :ref:`float<class_float>`                     | :ref:`gravity<class_Area_property_gravity>`                               | ``9.8``                 |
 | :ref:`float<class_float>`                     | :ref:`gravity<class_Area_property_gravity>`                               | ``9.8``                 |
 +-----------------------------------------------+---------------------------------------------------------------------------+-------------------------+
 +-----------------------------------------------+---------------------------------------------------------------------------+-------------------------+
 | :ref:`float<class_float>`                     | :ref:`gravity_distance_scale<class_Area_property_gravity_distance_scale>` | ``0.0``                 |
 | :ref:`float<class_float>`                     | :ref:`gravity_distance_scale<class_Area_property_gravity_distance_scale>` | ``0.0``                 |
@@ -69,23 +65,15 @@ Properties
 Methods
 Methods
 -------
 -------
 
 
-+---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`   | :ref:`get_collision_layer_bit<class_Area_method_get_collision_layer_bit>` **(** :ref:`int<class_int>` bit **)** |const|                        |
-+---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`   | :ref:`get_collision_mask_bit<class_Area_method_get_collision_mask_bit>` **(** :ref:`int<class_int>` bit **)** |const|                          |
-+---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>` | :ref:`get_overlapping_areas<class_Area_method_get_overlapping_areas>` **(** **)** |const|                                                      |
-+---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>` | :ref:`get_overlapping_bodies<class_Area_method_get_overlapping_bodies>` **(** **)** |const|                                                    |
-+---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`   | :ref:`overlaps_area<class_Area_method_overlaps_area>` **(** :ref:`Node<class_Node>` area **)** |const|                                         |
-+---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`   | :ref:`overlaps_body<class_Area_method_overlaps_body>` **(** :ref:`Node<class_Node>` body **)** |const|                                         |
-+---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                      | :ref:`set_collision_layer_bit<class_Area_method_set_collision_layer_bit>` **(** :ref:`int<class_int>` bit, :ref:`bool<class_bool>` value **)** |
-+---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                      | :ref:`set_collision_mask_bit<class_Area_method_set_collision_mask_bit>` **(** :ref:`int<class_int>` bit, :ref:`bool<class_bool>` value **)**   |
-+---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
++---------------------------+--------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>` | :ref:`get_overlapping_areas<class_Area_method_get_overlapping_areas>` **(** **)** |const|              |
++---------------------------+--------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>` | :ref:`get_overlapping_bodies<class_Area_method_get_overlapping_bodies>` **(** **)** |const|            |
++---------------------------+--------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`   | :ref:`overlaps_area<class_Area_method_overlaps_area>` **(** :ref:`Node<class_Node>` area **)** |const| |
++---------------------------+--------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`   | :ref:`overlaps_body<class_Area_method_overlaps_body>` **(** :ref:`Node<class_Node>` body **)** |const| |
++---------------------------+--------------------------------------------------------------------------------------------------------+
 
 
 Signals
 Signals
 -------
 -------
@@ -112,7 +100,7 @@ Emitted when another Area exits this Area. Requires :ref:`monitoring<class_Area_
 
 
 .. _class_Area_signal_area_shape_entered:
 .. _class_Area_signal_area_shape_entered:
 
 
-- **area_shape_entered** **(** :ref:`int<class_int>` area_id, :ref:`Area<class_Area>` area, :ref:`int<class_int>` area_shape, :ref:`int<class_int>` local_shape **)**
+- **area_shape_entered** **(** :ref:`RID<class_RID>` area_rid, :ref:`Area<class_Area>` area, :ref:`int<class_int>` area_shape, :ref:`int<class_int>` local_shape **)**
 
 
 Emitted when one of another Area's :ref:`Shape<class_Shape>`\ s enters one of this Area's :ref:`Shape<class_Shape>`\ s. Requires :ref:`monitoring<class_Area_property_monitoring>` to be set to ``true``.
 Emitted when one of another Area's :ref:`Shape<class_Shape>`\ s enters one of this Area's :ref:`Shape<class_Shape>`\ s. Requires :ref:`monitoring<class_Area_property_monitoring>` to be set to ``true``.
 
 
@@ -128,7 +116,7 @@ Emitted when one of another Area's :ref:`Shape<class_Shape>`\ s enters one of th
 
 
 .. _class_Area_signal_area_shape_exited:
 .. _class_Area_signal_area_shape_exited:
 
 
-- **area_shape_exited** **(** :ref:`int<class_int>` area_id, :ref:`Area<class_Area>` area, :ref:`int<class_int>` area_shape, :ref:`int<class_int>` local_shape **)**
+- **area_shape_exited** **(** :ref:`RID<class_RID>` area_rid, :ref:`Area<class_Area>` area, :ref:`int<class_int>` area_shape, :ref:`int<class_int>` local_shape **)**
 
 
 Emitted when one of another Area's :ref:`Shape<class_Shape>`\ s enters one of this Area's :ref:`Shape<class_Shape>`\ s. Requires :ref:`monitoring<class_Area_property_monitoring>` to be set to ``true``.
 Emitted when one of another Area's :ref:`Shape<class_Shape>`\ s enters one of this Area's :ref:`Shape<class_Shape>`\ s. Requires :ref:`monitoring<class_Area_property_monitoring>` to be set to ``true``.
 
 
@@ -164,7 +152,7 @@ Emitted when a :ref:`PhysicsBody<class_PhysicsBody>` or :ref:`GridMap<class_Grid
 
 
 .. _class_Area_signal_body_shape_entered:
 .. _class_Area_signal_body_shape_entered:
 
 
-- **body_shape_entered** **(** :ref:`int<class_int>` body_id, :ref:`Node<class_Node>` body, :ref:`int<class_int>` body_shape, :ref:`int<class_int>` local_shape **)**
+- **body_shape_entered** **(** :ref:`RID<class_RID>` body_rid, :ref:`Node<class_Node>` body, :ref:`int<class_int>` body_shape, :ref:`int<class_int>` local_shape **)**
 
 
 Emitted when one of a :ref:`PhysicsBody<class_PhysicsBody>` or :ref:`GridMap<class_GridMap>`'s :ref:`Shape<class_Shape>`\ s enters one of this Area's :ref:`Shape<class_Shape>`\ s. Requires :ref:`monitoring<class_Area_property_monitoring>` to be set to ``true``. :ref:`GridMap<class_GridMap>`\ s are detected if the :ref:`MeshLibrary<class_MeshLibrary>` has Collision :ref:`Shape<class_Shape>`\ s.
 Emitted when one of a :ref:`PhysicsBody<class_PhysicsBody>` or :ref:`GridMap<class_GridMap>`'s :ref:`Shape<class_Shape>`\ s enters one of this Area's :ref:`Shape<class_Shape>`\ s. Requires :ref:`monitoring<class_Area_property_monitoring>` to be set to ``true``. :ref:`GridMap<class_GridMap>`\ s are detected if the :ref:`MeshLibrary<class_MeshLibrary>` has Collision :ref:`Shape<class_Shape>`\ s.
 
 
@@ -180,7 +168,7 @@ Emitted when one of a :ref:`PhysicsBody<class_PhysicsBody>` or :ref:`GridMap<cla
 
 
 .. _class_Area_signal_body_shape_exited:
 .. _class_Area_signal_body_shape_exited:
 
 
-- **body_shape_exited** **(** :ref:`int<class_int>` body_id, :ref:`Node<class_Node>` body, :ref:`int<class_int>` body_shape, :ref:`int<class_int>` local_shape **)**
+- **body_shape_exited** **(** :ref:`RID<class_RID>` body_rid, :ref:`Node<class_Node>` body, :ref:`int<class_int>` body_shape, :ref:`int<class_int>` local_shape **)**
 
 
 Emitted when one of a :ref:`PhysicsBody<class_PhysicsBody>` or :ref:`GridMap<class_GridMap>`'s :ref:`Shape<class_Shape>`\ s enters one of this Area's :ref:`Shape<class_Shape>`\ s. Requires :ref:`monitoring<class_Area_property_monitoring>` to be set to ``true``. :ref:`GridMap<class_GridMap>`\ s are detected if the :ref:`MeshLibrary<class_MeshLibrary>` has Collision :ref:`Shape<class_Shape>`\ s.
 Emitted when one of a :ref:`PhysicsBody<class_PhysicsBody>` or :ref:`GridMap<class_GridMap>`'s :ref:`Shape<class_Shape>`\ s enters one of this Area's :ref:`Shape<class_Shape>`\ s. Requires :ref:`monitoring<class_Area_property_monitoring>` to be set to ``true``. :ref:`GridMap<class_GridMap>`\ s are detected if the :ref:`MeshLibrary<class_MeshLibrary>` has Collision :ref:`Shape<class_Shape>`\ s.
 
 
@@ -272,38 +260,6 @@ If ``true``, the area's audio bus overrides the default audio bus.
 
 
 ----
 ----
 
 
-.. _class_Area_property_collision_layer:
-
-- :ref:`int<class_int>` **collision_layer**
-
-+-----------+----------------------------+
-| *Default* | ``1``                      |
-+-----------+----------------------------+
-| *Setter*  | set_collision_layer(value) |
-+-----------+----------------------------+
-| *Getter*  | get_collision_layer()      |
-+-----------+----------------------------+
-
-The area's physics layer(s). Collidable objects can exist in any of 32 different layers. A contact is detected if object A is in any of the layers that object B scans, or object B is in any layers that object A scans. See also :ref:`collision_mask<class_Area_property_collision_mask>`. See `Collision layers and masks <https://docs.godotengine.org/en/3.3/tutorials/physics/physics_introduction.html#collision-layers-and-masks>`_ in the documentation for more information.
-
-----
-
-.. _class_Area_property_collision_mask:
-
-- :ref:`int<class_int>` **collision_mask**
-
-+-----------+---------------------------+
-| *Default* | ``1``                     |
-+-----------+---------------------------+
-| *Setter*  | set_collision_mask(value) |
-+-----------+---------------------------+
-| *Getter*  | get_collision_mask()      |
-+-----------+---------------------------+
-
-The physics layers this area scans to determine collision detection. See `Collision layers and masks <https://docs.godotengine.org/en/3.3/tutorials/physics/physics_introduction.html#collision-layers-and-masks>`_ in the documentation for more information.
-
-----
-
 .. _class_Area_property_gravity:
 .. _class_Area_property_gravity:
 
 
 - :ref:`float<class_float>` **gravity**
 - :ref:`float<class_float>` **gravity**
@@ -515,22 +471,6 @@ Override mode for gravity and damping calculations within this area. See :ref:`S
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
 
 
-.. _class_Area_method_get_collision_layer_bit:
-
-- :ref:`bool<class_bool>` **get_collision_layer_bit** **(** :ref:`int<class_int>` bit **)** |const|
-
-Returns an individual bit on the layer mask.
-
-----
-
-.. _class_Area_method_get_collision_mask_bit:
-
-- :ref:`bool<class_bool>` **get_collision_mask_bit** **(** :ref:`int<class_int>` bit **)** |const|
-
-Returns an individual bit on the collision mask.
-
-----
-
 .. _class_Area_method_get_overlapping_areas:
 .. _class_Area_method_get_overlapping_areas:
 
 
 - :ref:`Array<class_Array>` **get_overlapping_areas** **(** **)** |const|
 - :ref:`Array<class_Array>` **get_overlapping_areas** **(** **)** |const|
@@ -567,22 +507,6 @@ If ``true``, the given physics body overlaps the Area.
 
 
 The ``body`` argument can either be a :ref:`PhysicsBody<class_PhysicsBody>` or a :ref:`GridMap<class_GridMap>` instance (while GridMaps are not physics body themselves, they register their tiles with collision shapes as a virtual physics body).
 The ``body`` argument can either be a :ref:`PhysicsBody<class_PhysicsBody>` or a :ref:`GridMap<class_GridMap>` instance (while GridMaps are not physics body themselves, they register their tiles with collision shapes as a virtual physics body).
 
 
-----
-
-.. _class_Area_method_set_collision_layer_bit:
-
-- void **set_collision_layer_bit** **(** :ref:`int<class_int>` bit, :ref:`bool<class_bool>` value **)**
-
-Set/clear individual bits on the layer mask. This simplifies editing this ``Area``'s layers.
-
-----
-
-.. _class_Area_method_set_collision_mask_bit:
-
-- void **set_collision_mask_bit** **(** :ref:`int<class_int>` bit, :ref:`bool<class_bool>` value **)**
-
-Set/clear individual bits on the collision mask. This simplifies editing which ``Area`` layers this ``Area`` scans.
-
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |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.)`
 .. |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.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`

+ 17 - 93
classes/class_area2d.rst

@@ -11,12 +11,12 @@ Area2D
 
 
 **Inherits:** :ref:`CollisionObject2D<class_CollisionObject2D>` **<** :ref:`Node2D<class_Node2D>` **<** :ref:`CanvasItem<class_CanvasItem>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 **Inherits:** :ref:`CollisionObject2D<class_CollisionObject2D>` **<** :ref:`Node2D<class_Node2D>` **<** :ref:`CanvasItem<class_CanvasItem>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
 
-2D area for detection and 2D physics influence.
+2D area for detection and physics and audio influence.
 
 
 Description
 Description
 -----------
 -----------
 
 
-2D area that detects :ref:`CollisionObject2D<class_CollisionObject2D>` nodes overlapping, entering, or exiting. Can also alter or override local physics parameters (gravity, damping).
+2D area that detects :ref:`CollisionObject2D<class_CollisionObject2D>` nodes overlapping, entering, or exiting. Can also alter or override local physics parameters (gravity, damping) and route audio to a custom audio bus.
 
 
 Tutorials
 Tutorials
 ---------
 ---------
@@ -39,10 +39,6 @@ Properties
 +-------------------------------------------------+-----------------------------------------------------------------------------+---------------------+
 +-------------------------------------------------+-----------------------------------------------------------------------------+---------------------+
 | :ref:`bool<class_bool>`                         | :ref:`audio_bus_override<class_Area2D_property_audio_bus_override>`         | ``false``           |
 | :ref:`bool<class_bool>`                         | :ref:`audio_bus_override<class_Area2D_property_audio_bus_override>`         | ``false``           |
 +-------------------------------------------------+-----------------------------------------------------------------------------+---------------------+
 +-------------------------------------------------+-----------------------------------------------------------------------------+---------------------+
-| :ref:`int<class_int>`                           | :ref:`collision_layer<class_Area2D_property_collision_layer>`               | ``1``               |
-+-------------------------------------------------+-----------------------------------------------------------------------------+---------------------+
-| :ref:`int<class_int>`                           | :ref:`collision_mask<class_Area2D_property_collision_mask>`                 | ``1``               |
-+-------------------------------------------------+-----------------------------------------------------------------------------+---------------------+
 | :ref:`float<class_float>`                       | :ref:`gravity<class_Area2D_property_gravity>`                               | ``98.0``            |
 | :ref:`float<class_float>`                       | :ref:`gravity<class_Area2D_property_gravity>`                               | ``98.0``            |
 +-------------------------------------------------+-----------------------------------------------------------------------------+---------------------+
 +-------------------------------------------------+-----------------------------------------------------------------------------+---------------------+
 | :ref:`float<class_float>`                       | :ref:`gravity_distance_scale<class_Area2D_property_gravity_distance_scale>` | ``0.0``             |
 | :ref:`float<class_float>`                       | :ref:`gravity_distance_scale<class_Area2D_property_gravity_distance_scale>` | ``0.0``             |
@@ -65,23 +61,15 @@ Properties
 Methods
 Methods
 -------
 -------
 
 
-+---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`   | :ref:`get_collision_layer_bit<class_Area2D_method_get_collision_layer_bit>` **(** :ref:`int<class_int>` bit **)** |const|                        |
-+---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`   | :ref:`get_collision_mask_bit<class_Area2D_method_get_collision_mask_bit>` **(** :ref:`int<class_int>` bit **)** |const|                          |
-+---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>` | :ref:`get_overlapping_areas<class_Area2D_method_get_overlapping_areas>` **(** **)** |const|                                                      |
-+---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>` | :ref:`get_overlapping_bodies<class_Area2D_method_get_overlapping_bodies>` **(** **)** |const|                                                    |
-+---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`   | :ref:`overlaps_area<class_Area2D_method_overlaps_area>` **(** :ref:`Node<class_Node>` area **)** |const|                                         |
-+---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`   | :ref:`overlaps_body<class_Area2D_method_overlaps_body>` **(** :ref:`Node<class_Node>` body **)** |const|                                         |
-+---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                      | :ref:`set_collision_layer_bit<class_Area2D_method_set_collision_layer_bit>` **(** :ref:`int<class_int>` bit, :ref:`bool<class_bool>` value **)** |
-+---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                      | :ref:`set_collision_mask_bit<class_Area2D_method_set_collision_mask_bit>` **(** :ref:`int<class_int>` bit, :ref:`bool<class_bool>` value **)**   |
-+---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
++---------------------------+----------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>` | :ref:`get_overlapping_areas<class_Area2D_method_get_overlapping_areas>` **(** **)** |const|              |
++---------------------------+----------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>` | :ref:`get_overlapping_bodies<class_Area2D_method_get_overlapping_bodies>` **(** **)** |const|            |
++---------------------------+----------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`   | :ref:`overlaps_area<class_Area2D_method_overlaps_area>` **(** :ref:`Node<class_Node>` area **)** |const| |
++---------------------------+----------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`   | :ref:`overlaps_body<class_Area2D_method_overlaps_body>` **(** :ref:`Node<class_Node>` body **)** |const| |
++---------------------------+----------------------------------------------------------------------------------------------------------+
 
 
 Signals
 Signals
 -------
 -------
@@ -108,7 +96,7 @@ Emitted when another Area2D exits this Area2D. Requires :ref:`monitoring<class_A
 
 
 .. _class_Area2D_signal_area_shape_entered:
 .. _class_Area2D_signal_area_shape_entered:
 
 
-- **area_shape_entered** **(** :ref:`int<class_int>` area_id, :ref:`Area2D<class_Area2D>` area, :ref:`int<class_int>` area_shape, :ref:`int<class_int>` local_shape **)**
+- **area_shape_entered** **(** :ref:`RID<class_RID>` area_rid, :ref:`Area2D<class_Area2D>` area, :ref:`int<class_int>` area_shape, :ref:`int<class_int>` local_shape **)**
 
 
 Emitted when one of another Area2D's :ref:`Shape2D<class_Shape2D>`\ s enters one of this Area2D's :ref:`Shape2D<class_Shape2D>`\ s. Requires :ref:`monitoring<class_Area2D_property_monitoring>` to be set to ``true``.
 Emitted when one of another Area2D's :ref:`Shape2D<class_Shape2D>`\ s enters one of this Area2D's :ref:`Shape2D<class_Shape2D>`\ s. Requires :ref:`monitoring<class_Area2D_property_monitoring>` to be set to ``true``.
 
 
@@ -124,7 +112,7 @@ Emitted when one of another Area2D's :ref:`Shape2D<class_Shape2D>`\ s enters one
 
 
 .. _class_Area2D_signal_area_shape_exited:
 .. _class_Area2D_signal_area_shape_exited:
 
 
-- **area_shape_exited** **(** :ref:`int<class_int>` area_id, :ref:`Area2D<class_Area2D>` area, :ref:`int<class_int>` area_shape, :ref:`int<class_int>` local_shape **)**
+- **area_shape_exited** **(** :ref:`RID<class_RID>` area_rid, :ref:`Area2D<class_Area2D>` area, :ref:`int<class_int>` area_shape, :ref:`int<class_int>` local_shape **)**
 
 
 Emitted when one of another Area2D's :ref:`Shape2D<class_Shape2D>`\ s exits one of this Area2D's :ref:`Shape2D<class_Shape2D>`\ s. Requires :ref:`monitoring<class_Area2D_property_monitoring>` to be set to ``true``.
 Emitted when one of another Area2D's :ref:`Shape2D<class_Shape2D>`\ s exits one of this Area2D's :ref:`Shape2D<class_Shape2D>`\ s. Requires :ref:`monitoring<class_Area2D_property_monitoring>` to be set to ``true``.
 
 
@@ -160,7 +148,7 @@ Emitted when a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_
 
 
 .. _class_Area2D_signal_body_shape_entered:
 .. _class_Area2D_signal_body_shape_entered:
 
 
-- **body_shape_entered** **(** :ref:`int<class_int>` body_id, :ref:`Node<class_Node>` body, :ref:`int<class_int>` body_shape, :ref:`int<class_int>` local_shape **)**
+- **body_shape_entered** **(** :ref:`RID<class_RID>` body_rid, :ref:`Node<class_Node>` body, :ref:`int<class_int>` body_shape, :ref:`int<class_int>` local_shape **)**
 
 
 Emitted when one of a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>`'s :ref:`Shape2D<class_Shape2D>`\ s enters one of this Area2D's :ref:`Shape2D<class_Shape2D>`\ s. Requires :ref:`monitoring<class_Area2D_property_monitoring>` to be set to ``true``. :ref:`TileMap<class_TileMap>`\ s are detected if the :ref:`TileSet<class_TileSet>` has Collision :ref:`Shape2D<class_Shape2D>`\ s.
 Emitted when one of a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>`'s :ref:`Shape2D<class_Shape2D>`\ s enters one of this Area2D's :ref:`Shape2D<class_Shape2D>`\ s. Requires :ref:`monitoring<class_Area2D_property_monitoring>` to be set to ``true``. :ref:`TileMap<class_TileMap>`\ s are detected if the :ref:`TileSet<class_TileSet>` has Collision :ref:`Shape2D<class_Shape2D>`\ s.
 
 
@@ -176,7 +164,7 @@ Emitted when one of a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap
 
 
 .. _class_Area2D_signal_body_shape_exited:
 .. _class_Area2D_signal_body_shape_exited:
 
 
-- **body_shape_exited** **(** :ref:`int<class_int>` body_id, :ref:`Node<class_Node>` body, :ref:`int<class_int>` body_shape, :ref:`int<class_int>` local_shape **)**
+- **body_shape_exited** **(** :ref:`RID<class_RID>` body_rid, :ref:`Node<class_Node>` body, :ref:`int<class_int>` body_shape, :ref:`int<class_int>` local_shape **)**
 
 
 Emitted when one of a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>`'s :ref:`Shape2D<class_Shape2D>`\ s exits one of this Area2D's :ref:`Shape2D<class_Shape2D>`\ s. Requires :ref:`monitoring<class_Area2D_property_monitoring>` to be set to ``true``. :ref:`TileMap<class_TileMap>`\ s are detected if the :ref:`TileSet<class_TileSet>` has Collision :ref:`Shape2D<class_Shape2D>`\ s.
 Emitted when one of a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>`'s :ref:`Shape2D<class_Shape2D>`\ s exits one of this Area2D's :ref:`Shape2D<class_Shape2D>`\ s. Requires :ref:`monitoring<class_Area2D_property_monitoring>` to be set to ``true``. :ref:`TileMap<class_TileMap>`\ s are detected if the :ref:`TileSet<class_TileSet>` has Collision :ref:`Shape2D<class_Shape2D>`\ s.
 
 
@@ -268,38 +256,6 @@ If ``true``, the area's audio bus overrides the default audio bus.
 
 
 ----
 ----
 
 
-.. _class_Area2D_property_collision_layer:
-
-- :ref:`int<class_int>` **collision_layer**
-
-+-----------+----------------------------+
-| *Default* | ``1``                      |
-+-----------+----------------------------+
-| *Setter*  | set_collision_layer(value) |
-+-----------+----------------------------+
-| *Getter*  | get_collision_layer()      |
-+-----------+----------------------------+
-
-The area's physics layer(s). Collidable objects can exist in any of 32 different layers. A contact is detected if object A is in any of the layers that object B scans, or object B is in any layers that object A scans. See also :ref:`collision_mask<class_Area2D_property_collision_mask>`. See `Collision layers and masks <https://docs.godotengine.org/en/3.3/tutorials/physics/physics_introduction.html#collision-layers-and-masks>`_ in the documentation for more information.
-
-----
-
-.. _class_Area2D_property_collision_mask:
-
-- :ref:`int<class_int>` **collision_mask**
-
-+-----------+---------------------------+
-| *Default* | ``1``                     |
-+-----------+---------------------------+
-| *Setter*  | set_collision_mask(value) |
-+-----------+---------------------------+
-| *Getter*  | get_collision_mask()      |
-+-----------+---------------------------+
-
-The physics layers this area scans to determine collision detection. See `Collision layers and masks <https://docs.godotengine.org/en/3.3/tutorials/physics/physics_introduction.html#collision-layers-and-masks>`_ in the documentation for more information.
-
-----
-
 .. _class_Area2D_property_gravity:
 .. _class_Area2D_property_gravity:
 
 
 - :ref:`float<class_float>` **gravity**
 - :ref:`float<class_float>` **gravity**
@@ -447,22 +403,6 @@ Override mode for gravity and damping calculations within this area. See :ref:`S
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
 
 
-.. _class_Area2D_method_get_collision_layer_bit:
-
-- :ref:`bool<class_bool>` **get_collision_layer_bit** **(** :ref:`int<class_int>` bit **)** |const|
-
-Returns an individual bit on the layer mask. Describes whether other areas will collide with this one on the given layer.
-
-----
-
-.. _class_Area2D_method_get_collision_mask_bit:
-
-- :ref:`bool<class_bool>` **get_collision_mask_bit** **(** :ref:`int<class_int>` bit **)** |const|
-
-Returns an individual bit on the collision mask. Describes whether this area will collide with others on the given layer.
-
-----
-
 .. _class_Area2D_method_get_overlapping_areas:
 .. _class_Area2D_method_get_overlapping_areas:
 
 
 - :ref:`Array<class_Array>` **get_overlapping_areas** **(** **)** |const|
 - :ref:`Array<class_Array>` **get_overlapping_areas** **(** **)** |const|
@@ -485,7 +425,7 @@ Returns a list of intersecting :ref:`PhysicsBody2D<class_PhysicsBody2D>`\ s. For
 
 
 If ``true``, the given area overlaps the Area2D.
 If ``true``, the given area overlaps the Area2D.
 
 
-**Note:** The result of this test is not immediate after moving objects. For performance, list of overlaps is updated once per frame and before the physics step. Consider using signals instead.
+**Note:** The result of this test is not immediate after moving objects. For performance, the list of overlaps is updated once per frame and before the physics step. Consider using signals instead.
 
 
 ----
 ----
 
 
@@ -497,23 +437,7 @@ If ``true``, the given physics body overlaps the Area2D.
 
 
 **Note:** The result of this test is not immediate after moving objects. For performance, list of overlaps is updated once per frame and before the physics step. Consider using signals instead.
 **Note:** The result of this test is not immediate after moving objects. For performance, list of overlaps is updated once per frame and before the physics step. Consider using signals instead.
 
 
-The ``body`` argument can either be a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or a :ref:`TileMap<class_TileMap>` instance (while TileMaps are not physics body themselves, they register their tiles with collision shapes as a virtual physics body).
-
-----
-
-.. _class_Area2D_method_set_collision_layer_bit:
-
-- void **set_collision_layer_bit** **(** :ref:`int<class_int>` bit, :ref:`bool<class_bool>` value **)**
-
-Set/clear individual bits on the layer mask. This makes getting an area in/out of only one layer easier.
-
-----
-
-.. _class_Area2D_method_set_collision_mask_bit:
-
-- void **set_collision_mask_bit** **(** :ref:`int<class_int>` bit, :ref:`bool<class_bool>` value **)**
-
-Set/clear individual bits on the collision mask. This makes selecting the areas scanned easier.
+The ``body`` argument can either be a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or a :ref:`TileMap<class_TileMap>` instance (while TileMaps are not physics bodies themselves, they register their tiles with collision shapes as a virtual physics body).
 
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |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.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 3 - 3
classes/class_array.rst

@@ -9,12 +9,12 @@
 Array
 Array
 =====
 =====
 
 
-Generic array datatype.
+A generic array datatype.
 
 
 Description
 Description
 -----------
 -----------
 
 
-Generic array which can contain several elements of any type, accessible by a numerical index starting at 0. Negative indices can be used to count from the back, like in Python (-1 is the last element, -2 the second to last, etc.).
+A generic array that can contain several elements of any type, accessible by a numerical index starting at 0. Negative indices can be used to count from the back, like in Python (-1 is the last element, -2 is the second to last, etc.).
 
 
 **Example:**
 **Example:**
 
 
@@ -37,7 +37,7 @@ Arrays can be concatenated using the ``+`` operator:
 
 
 **Note:** Concatenating with the ``+=`` operator will create a new array, which has a cost. If you want to append another array to an existing array, :ref:`append_array<class_Array_method_append_array>` is more efficient.
 **Note:** Concatenating with the ``+=`` operator will create a new array, which has a cost. If you want to append another array to an existing array, :ref:`append_array<class_Array_method_append_array>` is more efficient.
 
 
-**Note:** Arrays are always passed by reference. To get a copy of an array which can be modified independently of the original array, use :ref:`duplicate<class_Array_method_duplicate>`.
+**Note:** Arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use :ref:`duplicate<class_Array_method_duplicate>`.
 
 
 **Note:** When declaring an array with ``const``, the array itself can still be mutated by defining the values at individual indices or pushing/removing elements. Using ``const`` will only prevent assigning the constant with another value after it was initialized.
 **Note:** When declaring an array with ``const``, the array itself can still be mutated by defining the values at individual indices or pushing/removing elements. Using ``const`` will only prevent assigning the constant with another value after it was initialized.
 
 

+ 19 - 1
classes/class_arraymesh.rst

@@ -66,6 +66,8 @@ Methods
 +-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                          | :ref:`clear_blend_shapes<class_ArrayMesh_method_clear_blend_shapes>` **(** **)**                                                                                                                                                                                              |
 | void                                          | :ref:`clear_blend_shapes<class_ArrayMesh_method_clear_blend_shapes>` **(** **)**                                                                                                                                                                                              |
 +-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`clear_surfaces<class_ArrayMesh_method_clear_surfaces>` **(** **)**                                                                                                                                                                                                      |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                         | :ref:`get_blend_shape_count<class_ArrayMesh_method_get_blend_shape_count>` **(** **)** |const|                                                                                                                                                                                |
 | :ref:`int<class_int>`                         | :ref:`get_blend_shape_count<class_ArrayMesh_method_get_blend_shape_count>` **(** **)** |const|                                                                                                                                                                                |
 +-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`String<class_String>`                   | :ref:`get_blend_shape_name<class_ArrayMesh_method_get_blend_shape_name>` **(** :ref:`int<class_int>` index **)** |const|                                                                                                                                                      |
 | :ref:`String<class_String>`                   | :ref:`get_blend_shape_name<class_ArrayMesh_method_get_blend_shape_name>` **(** :ref:`int<class_int>` index **)** |const|                                                                                                                                                      |
@@ -74,6 +76,8 @@ Methods
 +-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                          | :ref:`regen_normalmaps<class_ArrayMesh_method_regen_normalmaps>` **(** **)**                                                                                                                                                                                                  |
 | void                                          | :ref:`regen_normalmaps<class_ArrayMesh_method_regen_normalmaps>` **(** **)**                                                                                                                                                                                                  |
 +-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`set_blend_shape_name<class_ArrayMesh_method_set_blend_shape_name>` **(** :ref:`int<class_int>` index, :ref:`String<class_String>` name **)**                                                                                                                            |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                         | :ref:`surface_find_by_name<class_ArrayMesh_method_surface_find_by_name>` **(** :ref:`String<class_String>` name **)** |const|                                                                                                                                                 |
 | :ref:`int<class_int>`                         | :ref:`surface_find_by_name<class_ArrayMesh_method_surface_find_by_name>` **(** :ref:`String<class_String>` name **)** |const|                                                                                                                                                 |
 +-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                         | :ref:`surface_get_array_index_len<class_ArrayMesh_method_surface_get_array_index_len>` **(** :ref:`int<class_int>` surf_idx **)** |const|                                                                                                                                     |
 | :ref:`int<class_int>`                         | :ref:`surface_get_array_index_len<class_ArrayMesh_method_surface_get_array_index_len>` **(** :ref:`int<class_int>` surf_idx **)** |const|                                                                                                                                     |
@@ -245,7 +249,7 @@ Adds name for a blend shape that will be added with :ref:`add_surface_from_array
 
 
 Creates a new surface.
 Creates a new surface.
 
 
-Surfaces are created to be rendered using a ``primitive``, which may be any of the types defined in :ref:`PrimitiveType<enum_Mesh_PrimitiveType>`. (As a note, when using indices, it is recommended to only use points, lines or triangles.) :ref:`Mesh.get_surface_count<class_Mesh_method_get_surface_count>` will become the ``surf_idx`` for this new surface.
+Surfaces are created to be rendered using a ``primitive``, which may be any of the types defined in :ref:`PrimitiveType<enum_Mesh_PrimitiveType>`. (As a note, when using indices, it is recommended to only use points, lines, or triangles.) :ref:`Mesh.get_surface_count<class_Mesh_method_get_surface_count>` will become the ``surf_idx`` for this new surface.
 
 
 The ``arrays`` argument is an array of arrays. See :ref:`ArrayType<enum_ArrayMesh_ArrayType>` for the values used in this array. For example, ``arrays[0]`` is the array of vertices. That first vertex sub-array is always required; the others are optional. Adding an index array puts this function into "index mode" where the vertex and other arrays become the sources of data and the index array defines the vertex order. All sub-arrays must have the same length as the vertex array or be empty, except for :ref:`ARRAY_INDEX<class_ArrayMesh_constant_ARRAY_INDEX>` if it is used.
 The ``arrays`` argument is an array of arrays. See :ref:`ArrayType<enum_ArrayMesh_ArrayType>` for the values used in this array. For example, ``arrays[0]`` is the array of vertices. That first vertex sub-array is always required; the others are optional. Adding an index array puts this function into "index mode" where the vertex and other arrays become the sources of data and the index array defines the vertex order. All sub-arrays must have the same length as the vertex array or be empty, except for :ref:`ARRAY_INDEX<class_ArrayMesh_constant_ARRAY_INDEX>` if it is used.
 
 
@@ -259,6 +263,14 @@ Removes all blend shapes from this ``ArrayMesh``.
 
 
 ----
 ----
 
 
+.. _class_ArrayMesh_method_clear_surfaces:
+
+- void **clear_surfaces** **(** **)**
+
+Removes all surfaces from this ``ArrayMesh``.
+
+----
+
 .. _class_ArrayMesh_method_get_blend_shape_count:
 .. _class_ArrayMesh_method_get_blend_shape_count:
 
 
 - :ref:`int<class_int>` **get_blend_shape_count** **(** **)** |const|
 - :ref:`int<class_int>` **get_blend_shape_count** **(** **)** |const|
@@ -291,6 +303,12 @@ Will regenerate normal maps for the ``ArrayMesh``.
 
 
 ----
 ----
 
 
+.. _class_ArrayMesh_method_set_blend_shape_name:
+
+- void **set_blend_shape_name** **(** :ref:`int<class_int>` index, :ref:`String<class_String>` name **)**
+
+----
+
 .. _class_ArrayMesh_method_surface_find_by_name:
 .. _class_ArrayMesh_method_surface_find_by_name:
 
 
 - :ref:`int<class_int>` **surface_find_by_name** **(** :ref:`String<class_String>` name **)** |const|
 - :ref:`int<class_int>` **surface_find_by_name** **(** :ref:`String<class_String>` name **)** |const|

+ 1 - 1
classes/class_arvrpositionaltracker.rst

@@ -9,7 +9,7 @@
 ARVRPositionalTracker
 ARVRPositionalTracker
 =====================
 =====================
 
 
-**Inherits:** :ref:`Object<class_Object>`
+**Inherits:** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
 
 
 A tracked object.
 A tracked object.
 
 

+ 50 - 0
classes/class_arvrserver.rst

@@ -35,9 +35,15 @@ Properties
 Methods
 Methods
 -------
 -------
 
 
++-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`add_interface<class_ARVRServer_method_add_interface>` **(** :ref:`ARVRInterface<class_ARVRInterface>` interface **)**                                                  |
++-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`add_tracker<class_ARVRServer_method_add_tracker>` **(** :ref:`ARVRPositionalTracker<class_ARVRPositionalTracker>` tracker **)**                                        |
 +-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                                      | :ref:`center_on_hmd<class_ARVRServer_method_center_on_hmd>` **(** :ref:`RotationMode<enum_ARVRServer_RotationMode>` rotation_mode, :ref:`bool<class_bool>` keep_height **)** |
 | void                                                      | :ref:`center_on_hmd<class_ARVRServer_method_center_on_hmd>` **(** :ref:`RotationMode<enum_ARVRServer_RotationMode>` rotation_mode, :ref:`bool<class_bool>` keep_height **)** |
 +-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`clear_primary_interface_if<class_ARVRServer_method_clear_primary_interface_if>` **(** :ref:`ARVRInterface<class_ARVRInterface>` interface **)**                        |
++-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`ARVRInterface<class_ARVRInterface>`                 | :ref:`find_interface<class_ARVRServer_method_find_interface>` **(** :ref:`String<class_String>` name **)** |const|                                                           |
 | :ref:`ARVRInterface<class_ARVRInterface>`                 | :ref:`find_interface<class_ARVRServer_method_find_interface>` **(** :ref:`String<class_String>` name **)** |const|                                                           |
 +-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Transform<class_Transform>`                         | :ref:`get_hmd_transform<class_ARVRServer_method_get_hmd_transform>` **(** **)**                                                                                              |
 | :ref:`Transform<class_Transform>`                         | :ref:`get_hmd_transform<class_ARVRServer_method_get_hmd_transform>` **(** **)**                                                                                              |
@@ -60,6 +66,10 @@ Methods
 +-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                                     | :ref:`get_tracker_count<class_ARVRServer_method_get_tracker_count>` **(** **)** |const|                                                                                      |
 | :ref:`int<class_int>`                                     | :ref:`get_tracker_count<class_ARVRServer_method_get_tracker_count>` **(** **)** |const|                                                                                      |
 +-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`remove_interface<class_ARVRServer_method_remove_interface>` **(** :ref:`ARVRInterface<class_ARVRInterface>` interface **)**                                            |
++-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                      | :ref:`remove_tracker<class_ARVRServer_method_remove_tracker>` **(** :ref:`ARVRPositionalTracker<class_ARVRPositionalTracker>` tracker **)**                                  |
++-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 
 Signals
 Signals
 -------
 -------
@@ -177,6 +187,22 @@ Allows you to adjust the scale to your game's units. Most AR/VR platforms assume
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
 
 
+.. _class_ARVRServer_method_add_interface:
+
+- void **add_interface** **(** :ref:`ARVRInterface<class_ARVRInterface>` interface **)**
+
+Registers an :ref:`ARVRInterface<class_ARVRInterface>` object.
+
+----
+
+.. _class_ARVRServer_method_add_tracker:
+
+- void **add_tracker** **(** :ref:`ARVRPositionalTracker<class_ARVRPositionalTracker>` tracker **)**
+
+Registers a new :ref:`ARVRPositionalTracker<class_ARVRPositionalTracker>` that tracks a spatial location in real space.
+
+----
+
 .. _class_ARVRServer_method_center_on_hmd:
 .. _class_ARVRServer_method_center_on_hmd:
 
 
 - void **center_on_hmd** **(** :ref:`RotationMode<enum_ARVRServer_RotationMode>` rotation_mode, :ref:`bool<class_bool>` keep_height **)**
 - void **center_on_hmd** **(** :ref:`RotationMode<enum_ARVRServer_RotationMode>` rotation_mode, :ref:`bool<class_bool>` keep_height **)**
@@ -195,6 +221,14 @@ You should call this method after a few seconds have passed. For instance, when
 
 
 ----
 ----
 
 
+.. _class_ARVRServer_method_clear_primary_interface_if:
+
+- void **clear_primary_interface_if** **(** :ref:`ARVRInterface<class_ARVRInterface>` interface **)**
+
+Clears our current primary interface if it is set to the provided interface.
+
+----
+
 .. _class_ARVRServer_method_find_interface:
 .. _class_ARVRServer_method_find_interface:
 
 
 - :ref:`ARVRInterface<class_ARVRInterface>` **find_interface** **(** :ref:`String<class_String>` name **)** |const|
 - :ref:`ARVRInterface<class_ARVRInterface>` **find_interface** **(** :ref:`String<class_String>` name **)** |const|
@@ -281,6 +315,22 @@ Returns the positional tracker at the given ID.
 
 
 Returns the number of trackers currently registered.
 Returns the number of trackers currently registered.
 
 
+----
+
+.. _class_ARVRServer_method_remove_interface:
+
+- void **remove_interface** **(** :ref:`ARVRInterface<class_ARVRInterface>` interface **)**
+
+Removes this interface.
+
+----
+
+.. _class_ARVRServer_method_remove_tracker:
+
+- void **remove_tracker** **(** :ref:`ARVRPositionalTracker<class_ARVRPositionalTracker>` tracker **)**
+
+Removes this positional tracker.
+
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |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.)`
 .. |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.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`

+ 1 - 1
classes/class_astar.rst

@@ -35,7 +35,7 @@ It is also possible to use non-Euclidean distances. To do so, create a class tha
 
 
 :ref:`_estimate_cost<class_AStar_method__estimate_cost>` should return a lower bound of the distance, i.e. ``_estimate_cost(u, v) <= _compute_cost(u, v)``. This serves as a hint to the algorithm because the custom ``_compute_cost`` might be computation-heavy. If this is not the case, make :ref:`_estimate_cost<class_AStar_method__estimate_cost>` return the same value as :ref:`_compute_cost<class_AStar_method__compute_cost>` to provide the algorithm with the most accurate information.
 :ref:`_estimate_cost<class_AStar_method__estimate_cost>` should return a lower bound of the distance, i.e. ``_estimate_cost(u, v) <= _compute_cost(u, v)``. This serves as a hint to the algorithm because the custom ``_compute_cost`` might be computation-heavy. If this is not the case, make :ref:`_estimate_cost<class_AStar_method__estimate_cost>` return the same value as :ref:`_compute_cost<class_AStar_method__compute_cost>` to provide the algorithm with the most accurate information.
 
 
-If the default :ref:`_estimate_cost<class_AStar_method__estimate_cost>` and :ref:`_compute_cost<class_AStar_method__compute_cost>` methods are used, or if the supplied :ref:`_estimate_cost<class_AStar_method__estimate_cost>` method returns a lower bound of the cost, then the paths returned by A\* will be the lowest cost paths. Here, the cost of a path equals to the sum of the :ref:`_compute_cost<class_AStar_method__compute_cost>` results of all segments in the path multiplied by the ``weight_scale``\ s of the end points of the respective segments. If the default methods are used and the ``weight_scale``\ s of all points are set to ``1.0``, then this equals to the sum of Euclidean distances of all segments in the path.
+If the default :ref:`_estimate_cost<class_AStar_method__estimate_cost>` and :ref:`_compute_cost<class_AStar_method__compute_cost>` methods are used, or if the supplied :ref:`_estimate_cost<class_AStar_method__estimate_cost>` method returns a lower bound of the cost, then the paths returned by A\* will be the lowest-cost paths. Here, the cost of a path equals the sum of the :ref:`_compute_cost<class_AStar_method__compute_cost>` results of all segments in the path multiplied by the ``weight_scale``\ s of the endpoints of the respective segments. If the default methods are used and the ``weight_scale``\ s of all points are set to ``1.0``, then this equals the sum of Euclidean distances of all segments in the path.
 
 
 Methods
 Methods
 -------
 -------

+ 10 - 6
classes/class_audioeffectpitchshift.rst

@@ -50,15 +50,15 @@ Enumerations
 
 
 enum **FFT_Size**:
 enum **FFT_Size**:
 
 
-- **FFT_SIZE_256** = **0**
+- **FFT_SIZE_256** = **0** --- Use a buffer of 256 samples for the Fast Fourier transform. Lowest latency, but least stable over time.
 
 
-- **FFT_SIZE_512** = **1**
+- **FFT_SIZE_512** = **1** --- Use a buffer of 512 samples for the Fast Fourier transform. Low latency, but less stable over time.
 
 
-- **FFT_SIZE_1024** = **2**
+- **FFT_SIZE_1024** = **2** --- Use a buffer of 1024 samples for the Fast Fourier transform. This is a compromise between latency and stability over time.
 
 
-- **FFT_SIZE_2048** = **3**
+- **FFT_SIZE_2048** = **3** --- Use a buffer of 2048 samples for the Fast Fourier transform. High latency, but stable over time.
 
 
-- **FFT_SIZE_4096** = **4**
+- **FFT_SIZE_4096** = **4** --- Use a buffer of 4096 samples for the Fast Fourier transform. Highest latency, but most stable over time.
 
 
 - **FFT_SIZE_MAX** = **5** --- Represents the size of the :ref:`FFT_Size<enum_AudioEffectPitchShift_FFT_Size>` enum.
 - **FFT_SIZE_MAX** = **5** --- Represents the size of the :ref:`FFT_Size<enum_AudioEffectPitchShift_FFT_Size>` enum.
 
 
@@ -77,6 +77,8 @@ Property Descriptions
 | *Getter*  | get_fft_size()      |
 | *Getter*  | get_fft_size()      |
 +-----------+---------------------+
 +-----------+---------------------+
 
 
+The size of the `Fast Fourier transform <https://en.wikipedia.org/wiki/Fast_Fourier_transform>`_ buffer. Higher values smooth out the effect over time, but have greater latency. The effects of this higher latency are especially noticeable on sounds that have sudden amplitude changes.
+
 ----
 ----
 
 
 .. _class_AudioEffectPitchShift_property_oversampling:
 .. _class_AudioEffectPitchShift_property_oversampling:
@@ -91,6 +93,8 @@ Property Descriptions
 | *Getter*  | get_oversampling()      |
 | *Getter*  | get_oversampling()      |
 +-----------+-------------------------+
 +-----------+-------------------------+
 
 
+The oversampling factor to use. Higher values result in better quality, but are more demanding on the CPU and may cause audio cracking if the CPU can't keep up.
+
 ----
 ----
 
 
 .. _class_AudioEffectPitchShift_property_pitch_scale:
 .. _class_AudioEffectPitchShift_property_pitch_scale:
@@ -105,7 +109,7 @@ Property Descriptions
 | *Getter*  | get_pitch_scale()      |
 | *Getter*  | get_pitch_scale()      |
 +-----------+------------------------+
 +-----------+------------------------+
 
 
-Pitch value. Can range from 0 (-1 octave) to 16 (+16 octaves).
+The pitch scale to use. ``1.0`` is the default pitch and plays sounds unaltered. :ref:`pitch_scale<class_AudioEffectPitchShift_property_pitch_scale>` can range from ``0.0`` (infinitely low pitch, inaudible) to ``16`` (16 times higher than the initial pitch).
 
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |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.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 23 - 5
classes/class_audioeffectspectrumanalyzer.rst

@@ -11,7 +11,21 @@ AudioEffectSpectrumAnalyzer
 
 
 **Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
 **Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
 
 
+Audio effect that can be used for real-time audio visualizations.
 
 
+Description
+-----------
+
+This audio effect does not affect sound output, but can be used for real-time audio visualizations.
+
+See also :ref:`AudioStreamGenerator<class_AudioStreamGenerator>` for procedurally generating sounds.
+
+Tutorials
+---------
+
+- `Audio Spectrum Demo <Audio Spectrum Demo>`_
+
+- `Godot 3.2 will get new audio features <Godot 3.2 will get new audio features>`_
 
 
 Properties
 Properties
 ----------
 ----------
@@ -43,15 +57,15 @@ Enumerations
 
 
 enum **FFT_Size**:
 enum **FFT_Size**:
 
 
-- **FFT_SIZE_256** = **0**
+- **FFT_SIZE_256** = **0** --- Use a buffer of 256 samples for the Fast Fourier transform. Lowest latency, but least stable over time.
 
 
-- **FFT_SIZE_512** = **1**
+- **FFT_SIZE_512** = **1** --- Use a buffer of 512 samples for the Fast Fourier transform. Low latency, but less stable over time.
 
 
-- **FFT_SIZE_1024** = **2**
+- **FFT_SIZE_1024** = **2** --- Use a buffer of 1024 samples for the Fast Fourier transform. This is a compromise between latency and stability over time.
 
 
-- **FFT_SIZE_2048** = **3**
+- **FFT_SIZE_2048** = **3** --- Use a buffer of 2048 samples for the Fast Fourier transform. High latency, but stable over time.
 
 
-- **FFT_SIZE_4096** = **4**
+- **FFT_SIZE_4096** = **4** --- Use a buffer of 4096 samples for the Fast Fourier transform. Highest latency, but most stable over time.
 
 
 - **FFT_SIZE_MAX** = **5** --- Represents the size of the :ref:`FFT_Size<enum_AudioEffectSpectrumAnalyzer_FFT_Size>` enum.
 - **FFT_SIZE_MAX** = **5** --- Represents the size of the :ref:`FFT_Size<enum_AudioEffectSpectrumAnalyzer_FFT_Size>` enum.
 
 
@@ -70,6 +84,8 @@ Property Descriptions
 | *Getter*  | get_buffer_length()      |
 | *Getter*  | get_buffer_length()      |
 +-----------+--------------------------+
 +-----------+--------------------------+
 
 
+The length of the buffer to keep (in seconds). Higher values keep data around for longer, but require more memory.
+
 ----
 ----
 
 
 .. _class_AudioEffectSpectrumAnalyzer_property_fft_size:
 .. _class_AudioEffectSpectrumAnalyzer_property_fft_size:
@@ -84,6 +100,8 @@ Property Descriptions
 | *Getter*  | get_fft_size()      |
 | *Getter*  | get_fft_size()      |
 +-----------+---------------------+
 +-----------+---------------------+
 
 
+The size of the `Fast Fourier transform <https://en.wikipedia.org/wiki/Fast_Fourier_transform>`_ buffer. Higher values smooth out the spectrum analysis over time, but have greater latency. The effects of this higher latency are especially noticeable with sudden amplitude changes.
+
 ----
 ----
 
 
 .. _class_AudioEffectSpectrumAnalyzer_property_tap_back_pos:
 .. _class_AudioEffectSpectrumAnalyzer_property_tap_back_pos:

+ 19 - 0
classes/class_audiostreamgenerator.rst

@@ -11,13 +11,24 @@ AudioStreamGenerator
 
 
 **Inherits:** :ref:`AudioStream<class_AudioStream>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
 **Inherits:** :ref:`AudioStream<class_AudioStream>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
 
 
+Audio stream that generates sounds procedurally.
 
 
+Description
+-----------
+
+This audio stream does not play back sounds, but expects a script to generate audio data for it instead. See also :ref:`AudioStreamGeneratorPlayback<class_AudioStreamGeneratorPlayback>`.
+
+See also :ref:`AudioEffectSpectrumAnalyzer<class_AudioEffectSpectrumAnalyzer>` for performing real-time audio spectrum analysis.
+
+**Note:** Due to performance constraints, this class is best used from C# or from a compiled language via GDNative. If you still want to use this class from GDScript, consider using a lower :ref:`mix_rate<class_AudioStreamGenerator_property_mix_rate>` such as 11,025 Hz or 22,050 Hz.
 
 
 Tutorials
 Tutorials
 ---------
 ---------
 
 
 - `https://godotengine.org/asset-library/asset/526 <https://godotengine.org/asset-library/asset/526>`_
 - `https://godotengine.org/asset-library/asset/526 <https://godotengine.org/asset-library/asset/526>`_
 
 
+- `Godot 3.2 will get new audio features <Godot 3.2 will get new audio features>`_
+
 Properties
 Properties
 ----------
 ----------
 
 
@@ -42,6 +53,8 @@ Property Descriptions
 | *Getter*  | get_buffer_length()      |
 | *Getter*  | get_buffer_length()      |
 +-----------+--------------------------+
 +-----------+--------------------------+
 
 
+The length of the buffer to generate (in seconds). Lower values result in less latency, but require the script to generate audio data faster, resulting in increased CPU usage and more risk for audio cracking if the CPU can't keep up.
+
 ----
 ----
 
 
 .. _class_AudioStreamGenerator_property_mix_rate:
 .. _class_AudioStreamGenerator_property_mix_rate:
@@ -56,6 +69,12 @@ Property Descriptions
 | *Getter*  | get_mix_rate()      |
 | *Getter*  | get_mix_rate()      |
 +-----------+---------------------+
 +-----------+---------------------+
 
 
+The sample rate to use (in Hz). Higher values are more demanding for the CPU to generate, but result in better quality.
+
+In games, common sample rates in use are ``11025``, ``16000``, ``22050``, ``32000``, ``44100``, and ``48000``.
+
+According to the `Nyquist-Shannon sampling theorem <https://en.wikipedia.org/wiki/Nyquist%E2%80%93Shannon_sampling_theorem>`_, there is no quality difference to human hearing when going past 40,000 Hz (since most humans can only hear up to ~20,000 Hz, often less). If you are generating lower-pitched sounds such as voices, lower sample rates such as ``32000`` or ``22050`` may be usable with no loss in quality.
+
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |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.)`
 .. |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.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`

+ 18 - 1
classes/class_audiostreamgeneratorplayback.rst

@@ -11,12 +11,19 @@ AudioStreamGeneratorPlayback
 
 
 **Inherits:** :ref:`AudioStreamPlaybackResampled<class_AudioStreamPlaybackResampled>` **<** :ref:`AudioStreamPlayback<class_AudioStreamPlayback>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
 **Inherits:** :ref:`AudioStreamPlaybackResampled<class_AudioStreamPlaybackResampled>` **<** :ref:`AudioStreamPlayback<class_AudioStreamPlayback>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
 
 
+Plays back audio generated using :ref:`AudioStreamGenerator<class_AudioStreamGenerator>`.
 
 
+Description
+-----------
+
+This class is meant to be used with :ref:`AudioStreamGenerator<class_AudioStreamGenerator>` to play back the generated audio in real-time.
 
 
 Tutorials
 Tutorials
 ---------
 ---------
 
 
-- `https://github.com/godotengine/godot-demo-projects/tree/master/audio/generator <https://github.com/godotengine/godot-demo-projects/tree/master/audio/generator>`_
+- `https://godotengine.org/asset-library/asset/526 <https://godotengine.org/asset-library/asset/526>`_
+
+- `Godot 3.2 will get new audio features <Godot 3.2 will get new audio features>`_
 
 
 Methods
 Methods
 -------
 -------
@@ -42,18 +49,24 @@ Method Descriptions
 
 
 - :ref:`bool<class_bool>` **can_push_buffer** **(** :ref:`int<class_int>` amount **)** |const|
 - :ref:`bool<class_bool>` **can_push_buffer** **(** :ref:`int<class_int>` amount **)** |const|
 
 
+Returns ``true`` if a buffer of the size ``amount`` can be pushed to the audio sample data buffer without overflowing it, ``false`` otherwise.
+
 ----
 ----
 
 
 .. _class_AudioStreamGeneratorPlayback_method_clear_buffer:
 .. _class_AudioStreamGeneratorPlayback_method_clear_buffer:
 
 
 - void **clear_buffer** **(** **)**
 - void **clear_buffer** **(** **)**
 
 
+Clears the audio sample data buffer.
+
 ----
 ----
 
 
 .. _class_AudioStreamGeneratorPlayback_method_get_frames_available:
 .. _class_AudioStreamGeneratorPlayback_method_get_frames_available:
 
 
 - :ref:`int<class_int>` **get_frames_available** **(** **)** |const|
 - :ref:`int<class_int>` **get_frames_available** **(** **)** |const|
 
 
+Returns the number of audio data frames left to play. If this returned number reaches ``0``, the audio will stop playing until frames are added again. Therefore, make sure your script can always generate and push new audio frames fast enough to avoid audio cracking.
+
 ----
 ----
 
 
 .. _class_AudioStreamGeneratorPlayback_method_get_skips:
 .. _class_AudioStreamGeneratorPlayback_method_get_skips:
@@ -66,12 +79,16 @@ Method Descriptions
 
 
 - :ref:`bool<class_bool>` **push_buffer** **(** :ref:`PoolVector2Array<class_PoolVector2Array>` frames **)**
 - :ref:`bool<class_bool>` **push_buffer** **(** :ref:`PoolVector2Array<class_PoolVector2Array>` frames **)**
 
 
+Pushes several audio data frames to the buffer. This is usually more efficient than :ref:`push_frame<class_AudioStreamGeneratorPlayback_method_push_frame>` in C# and compiled languages via GDNative, but :ref:`push_buffer<class_AudioStreamGeneratorPlayback_method_push_buffer>` may be *less* efficient in GDScript.
+
 ----
 ----
 
 
 .. _class_AudioStreamGeneratorPlayback_method_push_frame:
 .. _class_AudioStreamGeneratorPlayback_method_push_frame:
 
 
 - :ref:`bool<class_bool>` **push_frame** **(** :ref:`Vector2<class_Vector2>` frame **)**
 - :ref:`bool<class_bool>` **push_frame** **(** :ref:`Vector2<class_Vector2>` frame **)**
 
 
+Pushes a single audio data frame to the buffer. This is usually less efficient than :ref:`push_buffer<class_AudioStreamGeneratorPlayback_method_push_buffer>` in C# and compiled languages via GDNative, but :ref:`push_frame<class_AudioStreamGeneratorPlayback_method_push_frame>` may be *more* efficient in GDScript.
+
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |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.)`
 .. |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.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`

+ 6 - 2
classes/class_audiostreamsample.rst

@@ -18,7 +18,7 @@ Description
 
 
 AudioStreamSample stores sound samples loaded from WAV files. To play the stored sound, use an :ref:`AudioStreamPlayer<class_AudioStreamPlayer>` (for non-positional audio) or :ref:`AudioStreamPlayer2D<class_AudioStreamPlayer2D>`/:ref:`AudioStreamPlayer3D<class_AudioStreamPlayer3D>` (for positional audio). The sound can be looped.
 AudioStreamSample stores sound samples loaded from WAV files. To play the stored sound, use an :ref:`AudioStreamPlayer<class_AudioStreamPlayer>` (for non-positional audio) or :ref:`AudioStreamPlayer2D<class_AudioStreamPlayer2D>`/:ref:`AudioStreamPlayer3D<class_AudioStreamPlayer3D>` (for positional audio). The sound can be looped.
 
 
-This class can also be used to store dynamically-generated PCM audio data.
+This class can also be used to store dynamically-generated PCM audio data. See also :ref:`AudioStreamGenerator<class_AudioStreamGenerator>` for procedural audio generation.
 
 
 Properties
 Properties
 ----------
 ----------
@@ -184,7 +184,11 @@ The loop mode. This information will be imported automatically from the WAV file
 | *Getter*  | get_mix_rate()      |
 | *Getter*  | get_mix_rate()      |
 +-----------+---------------------+
 +-----------+---------------------+
 
 
-The sample rate for mixing this audio.
+The sample rate for mixing this audio. Higher values require more storage space, but result in better quality.
+
+In games, common sample rates in use are ``11025``, ``16000``, ``22050``, ``32000``, ``44100``, and ``48000``.
+
+According to the `Nyquist-Shannon sampling theorem <https://en.wikipedia.org/wiki/Nyquist%E2%80%93Shannon_sampling_theorem>`_, there is no quality difference to human hearing when going past 40,000 Hz (since most humans can only hear up to ~20,000 Hz, often less). If you are using lower-pitched sounds such as voices, lower sample rates such as ``32000`` or ``22050`` may be usable with no loss in quality.
 
 
 ----
 ----
 
 

+ 1 - 1
classes/class_bakedlightmap.rst

@@ -9,7 +9,7 @@
 BakedLightmap
 BakedLightmap
 =============
 =============
 
 
-**Inherits:** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`CullInstance<class_CullInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
 
 Prerendered indirect light map for a scene.
 Prerendered indirect light map for a scene.
 
 

+ 24 - 10
classes/class_basebutton.rst

@@ -50,15 +50,17 @@ Properties
 Methods
 Methods
 -------
 -------
 
 
-+-------------------------------------------+----------------------------------------------------------------------------------------------------------------+
-| void                                      | :ref:`_pressed<class_BaseButton_method__pressed>` **(** **)** |virtual|                                        |
-+-------------------------------------------+----------------------------------------------------------------------------------------------------------------+
-| void                                      | :ref:`_toggled<class_BaseButton_method__toggled>` **(** :ref:`bool<class_bool>` button_pressed **)** |virtual| |
-+-------------------------------------------+----------------------------------------------------------------------------------------------------------------+
-| :ref:`DrawMode<enum_BaseButton_DrawMode>` | :ref:`get_draw_mode<class_BaseButton_method_get_draw_mode>` **(** **)** |const|                                |
-+-------------------------------------------+----------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                   | :ref:`is_hovered<class_BaseButton_method_is_hovered>` **(** **)** |const|                                      |
-+-------------------------------------------+----------------------------------------------------------------------------------------------------------------+
++-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------+
+| void                                      | :ref:`_pressed<class_BaseButton_method__pressed>` **(** **)** |virtual|                                                 |
++-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------+
+| void                                      | :ref:`_toggled<class_BaseButton_method__toggled>` **(** :ref:`bool<class_bool>` button_pressed **)** |virtual|          |
++-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------+
+| :ref:`DrawMode<enum_BaseButton_DrawMode>` | :ref:`get_draw_mode<class_BaseButton_method_get_draw_mode>` **(** **)** |const|                                         |
++-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                   | :ref:`is_hovered<class_BaseButton_method_is_hovered>` **(** **)** |const|                                               |
++-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------+
+| void                                      | :ref:`set_pressed_no_signal<class_BaseButton_method_set_pressed_no_signal>` **(** :ref:`bool<class_bool>` pressed **)** |
++-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------+
 
 
 Signals
 Signals
 -------
 -------
@@ -249,7 +251,9 @@ If ``true``, the button stays pressed when moving the cursor outside the button
 | *Getter*  | is_pressed()       |
 | *Getter*  | is_pressed()       |
 +-----------+--------------------+
 +-----------+--------------------+
 
 
-If ``true``, the button's state is pressed. Means the button is pressed down or toggled (if :ref:`toggle_mode<class_BaseButton_property_toggle_mode>` is active).
+If ``true``, the button's state is pressed. Means the button is pressed down or toggled (if :ref:`toggle_mode<class_BaseButton_property_toggle_mode>` is active). Only works if :ref:`toggle_mode<class_BaseButton_property_toggle_mode>` is ``true``.
+
+**Note:** Setting :ref:`pressed<class_BaseButton_property_pressed>` will result in :ref:`toggled<class_BaseButton_signal_toggled>` to be emitted. If you want to change the pressed state without emitting that signal, use :ref:`set_pressed_no_signal<class_BaseButton_method_set_pressed_no_signal>`.
 
 
 ----
 ----
 
 
@@ -330,6 +334,16 @@ Returns the visual state used to draw the button. This is useful mainly when imp
 
 
 Returns ``true`` if the mouse has entered the button and has not left it yet.
 Returns ``true`` if the mouse has entered the button and has not left it yet.
 
 
+----
+
+.. _class_BaseButton_method_set_pressed_no_signal:
+
+- void **set_pressed_no_signal** **(** :ref:`bool<class_bool>` pressed **)**
+
+Changes the :ref:`pressed<class_BaseButton_property_pressed>` state of the button, without emitting :ref:`toggled<class_BaseButton_signal_toggled>`. Use when you just want to change the state of the button without sending the pressed event (e.g. when initializing scene). Only works if :ref:`toggle_mode<class_BaseButton_property_toggle_mode>` is ``true``.
+
+**Note:** This method doesn't unpress other buttons in its button :ref:`group<class_BaseButton_property_group>`.
+
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |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.)`
 .. |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.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`

+ 9 - 0
classes/class_buttongroup.rst

@@ -36,6 +36,15 @@ Methods
 | :ref:`BaseButton<class_BaseButton>` | :ref:`get_pressed_button<class_ButtonGroup_method_get_pressed_button>` **(** **)** |
 | :ref:`BaseButton<class_BaseButton>` | :ref:`get_pressed_button<class_ButtonGroup_method_get_pressed_button>` **(** **)** |
 +-------------------------------------+------------------------------------------------------------------------------------+
 +-------------------------------------+------------------------------------------------------------------------------------+
 
 
+Signals
+-------
+
+.. _class_ButtonGroup_signal_pressed:
+
+- **pressed** **(** :ref:`Object<class_Object>` button **)**
+
+Emitted when one of the buttons of the group is pressed.
+
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
 
 

+ 8 - 8
classes/class_camera.rst

@@ -400,7 +400,7 @@ Returns ``true`` if the given ``layer`` in the :ref:`cull_mask<class_Camera_prop
 
 
 - :ref:`Array<class_Array>` **get_frustum** **(** **)** |const|
 - :ref:`Array<class_Array>` **get_frustum** **(** **)** |const|
 
 
-Returns the camera's frustum planes in world-space units as an array of :ref:`Plane<class_Plane>`\ s in the following order: near, far, left, top, right, bottom. Not to be confused with :ref:`frustum_offset<class_Camera_property_frustum_offset>`.
+Returns the camera's frustum planes in world space units as an array of :ref:`Plane<class_Plane>`\ s in the following order: near, far, left, top, right, bottom. Not to be confused with :ref:`frustum_offset<class_Camera_property_frustum_offset>`.
 
 
 ----
 ----
 
 
@@ -434,7 +434,7 @@ Returns a normal vector from the screen point location directed along the camera
 
 
 - :ref:`Vector3<class_Vector3>` **project_position** **(** :ref:`Vector2<class_Vector2>` screen_point, :ref:`float<class_float>` z_depth **)** |const|
 - :ref:`Vector3<class_Vector3>` **project_position** **(** :ref:`Vector2<class_Vector2>` screen_point, :ref:`float<class_float>` z_depth **)** |const|
 
 
-Returns the 3D point in worldspace that maps to the given 2D coordinate in the :ref:`Viewport<class_Viewport>` rectangle on a plane that is the given ``z_depth`` distance into the scene away from the camera.
+Returns the 3D point in world space that maps to the given 2D coordinate in the :ref:`Viewport<class_Viewport>` rectangle on a plane that is the given ``z_depth`` distance into the scene away from the camera.
 
 
 ----
 ----
 
 
@@ -442,7 +442,7 @@ Returns the 3D point in worldspace that maps to the given 2D coordinate in the :
 
 
 - :ref:`Vector3<class_Vector3>` **project_ray_normal** **(** :ref:`Vector2<class_Vector2>` screen_point **)** |const|
 - :ref:`Vector3<class_Vector3>` **project_ray_normal** **(** :ref:`Vector2<class_Vector2>` screen_point **)** |const|
 
 
-Returns a normal vector in worldspace, that is the result of projecting a point on the :ref:`Viewport<class_Viewport>` rectangle by the camera projection. This is useful for casting rays in the form of (origin, normal) for object intersection or picking.
+Returns a normal vector in world space, that is the result of projecting a point on the :ref:`Viewport<class_Viewport>` rectangle by the camera projection. This is useful for casting rays in the form of (origin, normal) for object intersection or picking.
 
 
 ----
 ----
 
 
@@ -450,7 +450,7 @@ Returns a normal vector in worldspace, that is the result of projecting a point
 
 
 - :ref:`Vector3<class_Vector3>` **project_ray_origin** **(** :ref:`Vector2<class_Vector2>` screen_point **)** |const|
 - :ref:`Vector3<class_Vector3>` **project_ray_origin** **(** :ref:`Vector2<class_Vector2>` screen_point **)** |const|
 
 
-Returns a 3D position in worldspace, that is the result of projecting a point on the :ref:`Viewport<class_Viewport>` rectangle by the camera projection. This is useful for casting rays in the form of (origin, normal) for object intersection or picking.
+Returns a 3D position in world space, that is the result of projecting a point on the :ref:`Viewport<class_Viewport>` rectangle by the camera projection. This is useful for casting rays in the form of (origin, normal) for object intersection or picking.
 
 
 ----
 ----
 
 
@@ -466,7 +466,7 @@ Enables or disables the given ``layer`` in the :ref:`cull_mask<class_Camera_prop
 
 
 - void **set_frustum** **(** :ref:`float<class_float>` size, :ref:`Vector2<class_Vector2>` offset, :ref:`float<class_float>` z_near, :ref:`float<class_float>` z_far **)**
 - void **set_frustum** **(** :ref:`float<class_float>` size, :ref:`Vector2<class_Vector2>` offset, :ref:`float<class_float>` z_near, :ref:`float<class_float>` z_far **)**
 
 
-Sets the camera projection to frustum mode (see :ref:`PROJECTION_FRUSTUM<class_Camera_constant_PROJECTION_FRUSTUM>`), by specifying a ``size``, an ``offset``, and the ``z_near`` and ``z_far`` clip planes in world-space units.
+Sets the camera projection to frustum mode (see :ref:`PROJECTION_FRUSTUM<class_Camera_constant_PROJECTION_FRUSTUM>`), by specifying a ``size``, an ``offset``, and the ``z_near`` and ``z_far`` clip planes in world space units.
 
 
 ----
 ----
 
 
@@ -474,7 +474,7 @@ Sets the camera projection to frustum mode (see :ref:`PROJECTION_FRUSTUM<class_C
 
 
 - void **set_orthogonal** **(** :ref:`float<class_float>` size, :ref:`float<class_float>` z_near, :ref:`float<class_float>` z_far **)**
 - void **set_orthogonal** **(** :ref:`float<class_float>` size, :ref:`float<class_float>` z_near, :ref:`float<class_float>` z_far **)**
 
 
-Sets the camera projection to orthogonal mode (see :ref:`PROJECTION_ORTHOGONAL<class_Camera_constant_PROJECTION_ORTHOGONAL>`), by specifying a ``size``, and the ``z_near`` and ``z_far`` clip planes in world-space units. (As a hint, 2D games often use this projection, with values specified in pixels.)
+Sets the camera projection to orthogonal mode (see :ref:`PROJECTION_ORTHOGONAL<class_Camera_constant_PROJECTION_ORTHOGONAL>`), by specifying a ``size``, and the ``z_near`` and ``z_far`` clip planes in world space units. (As a hint, 2D games often use this projection, with values specified in pixels.)
 
 
 ----
 ----
 
 
@@ -482,7 +482,7 @@ Sets the camera projection to orthogonal mode (see :ref:`PROJECTION_ORTHOGONAL<c
 
 
 - void **set_perspective** **(** :ref:`float<class_float>` fov, :ref:`float<class_float>` z_near, :ref:`float<class_float>` z_far **)**
 - void **set_perspective** **(** :ref:`float<class_float>` fov, :ref:`float<class_float>` z_near, :ref:`float<class_float>` z_far **)**
 
 
-Sets the camera projection to perspective mode (see :ref:`PROJECTION_PERSPECTIVE<class_Camera_constant_PROJECTION_PERSPECTIVE>`), by specifying a ``fov`` (field of view) angle in degrees, and the ``z_near`` and ``z_far`` clip planes in world-space units.
+Sets the camera projection to perspective mode (see :ref:`PROJECTION_PERSPECTIVE<class_Camera_constant_PROJECTION_PERSPECTIVE>`), by specifying a ``fov`` (field of view) angle in degrees, and the ``z_near`` and ``z_far`` clip planes in world space units.
 
 
 ----
 ----
 
 
@@ -490,7 +490,7 @@ Sets the camera projection to perspective mode (see :ref:`PROJECTION_PERSPECTIVE
 
 
 - :ref:`Vector2<class_Vector2>` **unproject_position** **(** :ref:`Vector3<class_Vector3>` world_point **)** |const|
 - :ref:`Vector2<class_Vector2>` **unproject_position** **(** :ref:`Vector3<class_Vector3>` world_point **)** |const|
 
 
-Returns the 2D coordinate in the :ref:`Viewport<class_Viewport>` rectangle that maps to the given 3D point in worldspace.
+Returns the 2D coordinate in the :ref:`Viewport<class_Viewport>` rectangle that maps to the given 3D point in world space.
 
 
 **Note:** When using this to position GUI elements over a 3D viewport, use :ref:`is_position_behind<class_Camera_method_is_position_behind>` to prevent them from appearing if the 3D point is behind the camera:
 **Note:** When using this to position GUI elements over a 3D viewport, use :ref:`is_position_behind<class_Camera_method_is_position_behind>` to prevent them from appearing if the 3D point is behind the camera:
 
 

+ 5 - 1
classes/class_camera2d.rst

@@ -18,7 +18,7 @@ Description
 
 
 Camera node for 2D scenes. It forces the screen (current layer) to scroll following this node. This makes it easier (and faster) to program scrollable scenes than manually changing the position of :ref:`CanvasItem<class_CanvasItem>`-based nodes.
 Camera node for 2D scenes. It forces the screen (current layer) to scroll following this node. This makes it easier (and faster) to program scrollable scenes than manually changing the position of :ref:`CanvasItem<class_CanvasItem>`-based nodes.
 
 
-This node is intended to be a simple helper to get things going quickly and it may happen that more functionality is desired to change how the camera works. To make your own custom camera node, inherit from :ref:`Node2D<class_Node2D>` and change the transform of the canvas by setting :ref:`Viewport.canvas_transform<class_Viewport_property_canvas_transform>` in :ref:`Viewport<class_Viewport>` (you can obtain the current :ref:`Viewport<class_Viewport>` by using :ref:`Node.get_viewport<class_Node_method_get_viewport>`).
+This node is intended to be a simple helper to get things going quickly, but more functionality may be desired to change how the camera works. To make your own custom camera node, inherit it from :ref:`Node2D<class_Node2D>` and change the transform of the canvas by setting :ref:`Viewport.canvas_transform<class_Viewport_property_canvas_transform>` in :ref:`Viewport<class_Viewport>` (you can obtain the current :ref:`Viewport<class_Viewport>` by using :ref:`Node.get_viewport<class_Node_method_get_viewport>`).
 
 
 Note that the ``Camera2D`` node's ``position`` doesn't represent the actual position of the screen, which may differ due to applied smoothing or limits. You can use :ref:`get_camera_screen_center<class_Camera2D_method_get_camera_screen_center>` to get the real position.
 Note that the ``Camera2D`` node's ``position`` doesn't represent the actual position of the screen, which may differ due to applied smoothing or limits. You can use :ref:`get_camera_screen_center<class_Camera2D_method_get_camera_screen_center>` to get the real position.
 
 
@@ -395,6 +395,10 @@ Right scroll limit in pixels. The camera stops moving when reaching this value.
 
 
 If ``true``, the camera smoothly stops when reaches its limits.
 If ``true``, the camera smoothly stops when reaches its limits.
 
 
+This has no effect if smoothing is disabled.
+
+**Note:** To immediately update the camera's position to be within limits without smoothing, even with this setting enabled, invoke :ref:`reset_smoothing<class_Camera2D_method_reset_smoothing>`.
+
 ----
 ----
 
 
 .. _class_Camera2D_property_limit_top:
 .. _class_Camera2D_property_limit_top:

+ 8 - 0
classes/class_checkbox.rst

@@ -37,6 +37,8 @@ Theme Properties
 +---------------------------------+--------------------------+------------------------------+
 +---------------------------------+--------------------------+------------------------------+
 | :ref:`Texture<class_Texture>`   | checked                  |                              |
 | :ref:`Texture<class_Texture>`   | checked                  |                              |
 +---------------------------------+--------------------------+------------------------------+
 +---------------------------------+--------------------------+------------------------------+
+| :ref:`Texture<class_Texture>`   | checked_disabled         |                              |
++---------------------------------+--------------------------+------------------------------+
 | :ref:`StyleBox<class_StyleBox>` | disabled                 |                              |
 | :ref:`StyleBox<class_StyleBox>` | disabled                 |                              |
 +---------------------------------+--------------------------+------------------------------+
 +---------------------------------+--------------------------+------------------------------+
 | :ref:`StyleBox<class_StyleBox>` | focus                    |                              |
 | :ref:`StyleBox<class_StyleBox>` | focus                    |                              |
@@ -65,10 +67,16 @@ Theme Properties
 +---------------------------------+--------------------------+------------------------------+
 +---------------------------------+--------------------------+------------------------------+
 | :ref:`Texture<class_Texture>`   | radio_checked            |                              |
 | :ref:`Texture<class_Texture>`   | radio_checked            |                              |
 +---------------------------------+--------------------------+------------------------------+
 +---------------------------------+--------------------------+------------------------------+
+| :ref:`Texture<class_Texture>`   | radio_checked_disabled   |                              |
++---------------------------------+--------------------------+------------------------------+
 | :ref:`Texture<class_Texture>`   | radio_unchecked          |                              |
 | :ref:`Texture<class_Texture>`   | radio_unchecked          |                              |
 +---------------------------------+--------------------------+------------------------------+
 +---------------------------------+--------------------------+------------------------------+
+| :ref:`Texture<class_Texture>`   | radio_unchecked_disabled |                              |
++---------------------------------+--------------------------+------------------------------+
 | :ref:`Texture<class_Texture>`   | unchecked                |                              |
 | :ref:`Texture<class_Texture>`   | unchecked                |                              |
 +---------------------------------+--------------------------+------------------------------+
 +---------------------------------+--------------------------+------------------------------+
+| :ref:`Texture<class_Texture>`   | unchecked_disabled       |                              |
++---------------------------------+--------------------------+------------------------------+
 
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |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.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 123 - 39
classes/class_collisionobject.rst

@@ -23,6 +23,10 @@ CollisionObject is the base class for physics objects. It can hold any number of
 Properties
 Properties
 ----------
 ----------
 
 
++-------------------------+------------------------------------------------------------------------------------+-----------+
+| :ref:`int<class_int>`   | :ref:`collision_layer<class_CollisionObject_property_collision_layer>`             | ``1``     |
++-------------------------+------------------------------------------------------------------------------------+-----------+
+| :ref:`int<class_int>`   | :ref:`collision_mask<class_CollisionObject_property_collision_mask>`               | ``1``     |
 +-------------------------+------------------------------------------------------------------------------------+-----------+
 +-------------------------+------------------------------------------------------------------------------------+-----------+
 | :ref:`bool<class_bool>` | :ref:`input_capture_on_drag<class_CollisionObject_property_input_capture_on_drag>` | ``false`` |
 | :ref:`bool<class_bool>` | :ref:`input_capture_on_drag<class_CollisionObject_property_input_capture_on_drag>` | ``false`` |
 +-------------------------+------------------------------------------------------------------------------------+-----------+
 +-------------------------+------------------------------------------------------------------------------------+-----------+
@@ -32,50 +36,58 @@ Properties
 Methods
 Methods
 -------
 -------
 
 
-+-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                              | :ref:`_input_event<class_CollisionObject_method__input_event>` **(** :ref:`Object<class_Object>` camera, :ref:`InputEvent<class_InputEvent>` event, :ref:`Vector3<class_Vector3>` click_position, :ref:`Vector3<class_Vector3>` click_normal, :ref:`int<class_int>` shape_idx **)** |virtual| |
-+-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`             | :ref:`create_shape_owner<class_CollisionObject_method_create_shape_owner>` **(** :ref:`Object<class_Object>` owner **)**                                                                                                                                                                      |
-+-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`             | :ref:`get_rid<class_CollisionObject_method_get_rid>` **(** **)** |const|                                                                                                                                                                                                                      |
-+-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`         | :ref:`get_shape_owners<class_CollisionObject_method_get_shape_owners>` **(** **)**                                                                                                                                                                                                            |
-+-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`           | :ref:`is_shape_owner_disabled<class_CollisionObject_method_is_shape_owner_disabled>` **(** :ref:`int<class_int>` owner_id **)** |const|                                                                                                                                                       |
-+-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                              | :ref:`remove_shape_owner<class_CollisionObject_method_remove_shape_owner>` **(** :ref:`int<class_int>` owner_id **)**                                                                                                                                                                         |
-+-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`             | :ref:`shape_find_owner<class_CollisionObject_method_shape_find_owner>` **(** :ref:`int<class_int>` shape_index **)** |const|                                                                                                                                                                  |
-+-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                              | :ref:`shape_owner_add_shape<class_CollisionObject_method_shape_owner_add_shape>` **(** :ref:`int<class_int>` owner_id, :ref:`Shape<class_Shape>` shape **)**                                                                                                                                  |
-+-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                              | :ref:`shape_owner_clear_shapes<class_CollisionObject_method_shape_owner_clear_shapes>` **(** :ref:`int<class_int>` owner_id **)**                                                                                                                                                             |
-+-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Object<class_Object>`       | :ref:`shape_owner_get_owner<class_CollisionObject_method_shape_owner_get_owner>` **(** :ref:`int<class_int>` owner_id **)** |const|                                                                                                                                                           |
-+-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Shape<class_Shape>`         | :ref:`shape_owner_get_shape<class_CollisionObject_method_shape_owner_get_shape>` **(** :ref:`int<class_int>` owner_id, :ref:`int<class_int>` shape_id **)** |const|                                                                                                                           |
-+-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`             | :ref:`shape_owner_get_shape_count<class_CollisionObject_method_shape_owner_get_shape_count>` **(** :ref:`int<class_int>` owner_id **)** |const|                                                                                                                                               |
-+-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`             | :ref:`shape_owner_get_shape_index<class_CollisionObject_method_shape_owner_get_shape_index>` **(** :ref:`int<class_int>` owner_id, :ref:`int<class_int>` shape_id **)** |const|                                                                                                               |
-+-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Transform<class_Transform>` | :ref:`shape_owner_get_transform<class_CollisionObject_method_shape_owner_get_transform>` **(** :ref:`int<class_int>` owner_id **)** |const|                                                                                                                                                   |
-+-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                              | :ref:`shape_owner_remove_shape<class_CollisionObject_method_shape_owner_remove_shape>` **(** :ref:`int<class_int>` owner_id, :ref:`int<class_int>` shape_id **)**                                                                                                                             |
-+-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                              | :ref:`shape_owner_set_disabled<class_CollisionObject_method_shape_owner_set_disabled>` **(** :ref:`int<class_int>` owner_id, :ref:`bool<class_bool>` disabled **)**                                                                                                                           |
-+-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                              | :ref:`shape_owner_set_transform<class_CollisionObject_method_shape_owner_set_transform>` **(** :ref:`int<class_int>` owner_id, :ref:`Transform<class_Transform>` transform **)**                                                                                                              |
-+-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                              | :ref:`_input_event<class_CollisionObject_method__input_event>` **(** :ref:`Object<class_Object>` camera, :ref:`InputEvent<class_InputEvent>` event, :ref:`Vector3<class_Vector3>` position, :ref:`Vector3<class_Vector3>` normal, :ref:`int<class_int>` shape_idx **)** |virtual| |
++-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`             | :ref:`create_shape_owner<class_CollisionObject_method_create_shape_owner>` **(** :ref:`Object<class_Object>` owner **)**                                                                                                                                                          |
++-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`           | :ref:`get_collision_layer_bit<class_CollisionObject_method_get_collision_layer_bit>` **(** :ref:`int<class_int>` bit **)** |const|                                                                                                                                                |
++-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`           | :ref:`get_collision_mask_bit<class_CollisionObject_method_get_collision_mask_bit>` **(** :ref:`int<class_int>` bit **)** |const|                                                                                                                                                  |
++-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`             | :ref:`get_rid<class_CollisionObject_method_get_rid>` **(** **)** |const|                                                                                                                                                                                                          |
++-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`         | :ref:`get_shape_owners<class_CollisionObject_method_get_shape_owners>` **(** **)**                                                                                                                                                                                                |
++-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`           | :ref:`is_shape_owner_disabled<class_CollisionObject_method_is_shape_owner_disabled>` **(** :ref:`int<class_int>` owner_id **)** |const|                                                                                                                                           |
++-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                              | :ref:`remove_shape_owner<class_CollisionObject_method_remove_shape_owner>` **(** :ref:`int<class_int>` owner_id **)**                                                                                                                                                             |
++-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                              | :ref:`set_collision_layer_bit<class_CollisionObject_method_set_collision_layer_bit>` **(** :ref:`int<class_int>` bit, :ref:`bool<class_bool>` value **)**                                                                                                                         |
++-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                              | :ref:`set_collision_mask_bit<class_CollisionObject_method_set_collision_mask_bit>` **(** :ref:`int<class_int>` bit, :ref:`bool<class_bool>` value **)**                                                                                                                           |
++-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`             | :ref:`shape_find_owner<class_CollisionObject_method_shape_find_owner>` **(** :ref:`int<class_int>` shape_index **)** |const|                                                                                                                                                      |
++-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                              | :ref:`shape_owner_add_shape<class_CollisionObject_method_shape_owner_add_shape>` **(** :ref:`int<class_int>` owner_id, :ref:`Shape<class_Shape>` shape **)**                                                                                                                      |
++-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                              | :ref:`shape_owner_clear_shapes<class_CollisionObject_method_shape_owner_clear_shapes>` **(** :ref:`int<class_int>` owner_id **)**                                                                                                                                                 |
++-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Object<class_Object>`       | :ref:`shape_owner_get_owner<class_CollisionObject_method_shape_owner_get_owner>` **(** :ref:`int<class_int>` owner_id **)** |const|                                                                                                                                               |
++-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Shape<class_Shape>`         | :ref:`shape_owner_get_shape<class_CollisionObject_method_shape_owner_get_shape>` **(** :ref:`int<class_int>` owner_id, :ref:`int<class_int>` shape_id **)** |const|                                                                                                               |
++-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`             | :ref:`shape_owner_get_shape_count<class_CollisionObject_method_shape_owner_get_shape_count>` **(** :ref:`int<class_int>` owner_id **)** |const|                                                                                                                                   |
++-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`             | :ref:`shape_owner_get_shape_index<class_CollisionObject_method_shape_owner_get_shape_index>` **(** :ref:`int<class_int>` owner_id, :ref:`int<class_int>` shape_id **)** |const|                                                                                                   |
++-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Transform<class_Transform>` | :ref:`shape_owner_get_transform<class_CollisionObject_method_shape_owner_get_transform>` **(** :ref:`int<class_int>` owner_id **)** |const|                                                                                                                                       |
++-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                              | :ref:`shape_owner_remove_shape<class_CollisionObject_method_shape_owner_remove_shape>` **(** :ref:`int<class_int>` owner_id, :ref:`int<class_int>` shape_id **)**                                                                                                                 |
++-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                              | :ref:`shape_owner_set_disabled<class_CollisionObject_method_shape_owner_set_disabled>` **(** :ref:`int<class_int>` owner_id, :ref:`bool<class_bool>` disabled **)**                                                                                                               |
++-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                              | :ref:`shape_owner_set_transform<class_CollisionObject_method_shape_owner_set_transform>` **(** :ref:`int<class_int>` owner_id, :ref:`Transform<class_Transform>` transform **)**                                                                                                  |
++-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 
 Signals
 Signals
 -------
 -------
 
 
 .. _class_CollisionObject_signal_input_event:
 .. _class_CollisionObject_signal_input_event:
 
 
-- **input_event** **(** :ref:`Node<class_Node>` camera, :ref:`InputEvent<class_InputEvent>` event, :ref:`Vector3<class_Vector3>` click_position, :ref:`Vector3<class_Vector3>` click_normal, :ref:`int<class_int>` shape_idx **)**
+- **input_event** **(** :ref:`Node<class_Node>` camera, :ref:`InputEvent<class_InputEvent>` event, :ref:`Vector3<class_Vector3>` position, :ref:`Vector3<class_Vector3>` normal, :ref:`int<class_int>` shape_idx **)**
 
 
-Emitted when :ref:`_input_event<class_CollisionObject_method__input_event>` receives an event. See its description for details.
+Emitted when the object receives an unhandled :ref:`InputEvent<class_InputEvent>`. ``position`` is the location in world space of the mouse pointer on the surface of the shape with index ``shape_idx`` and ``normal`` is the normal vector of the surface at that point.
 
 
 ----
 ----
 
 
@@ -96,6 +108,42 @@ Emitted when the mouse pointer exits all this object's shapes.
 Property Descriptions
 Property Descriptions
 ---------------------
 ---------------------
 
 
+.. _class_CollisionObject_property_collision_layer:
+
+- :ref:`int<class_int>` **collision_layer**
+
++-----------+----------------------------+
+| *Default* | ``1``                      |
++-----------+----------------------------+
+| *Setter*  | set_collision_layer(value) |
++-----------+----------------------------+
+| *Getter*  | get_collision_layer()      |
++-----------+----------------------------+
+
+The physics layers this CollisionObject3D is in. Collision objects can exist in one or more of 32 different layers. See also :ref:`collision_mask<class_CollisionObject_property_collision_mask>`.
+
+**Note:** A contact is detected if object A is in any of the layers that object B scans, or object B is in any layers that object A scans. See `Collision layers and masks <https://docs.godotengine.org/en/latest/tutorials/physics/physics_introduction.html#collision-layers-and-masks>`_ in the documentation for more information.
+
+----
+
+.. _class_CollisionObject_property_collision_mask:
+
+- :ref:`int<class_int>` **collision_mask**
+
++-----------+---------------------------+
+| *Default* | ``1``                     |
++-----------+---------------------------+
+| *Setter*  | set_collision_mask(value) |
++-----------+---------------------------+
+| *Getter*  | get_collision_mask()      |
++-----------+---------------------------+
+
+The physics layers this CollisionObject3D scans. Collision objects can scan one or more of 32 different layers. See also :ref:`collision_layer<class_CollisionObject_property_collision_layer>`.
+
+**Note:** A contact is detected if object A is in any of the layers that object B scans, or object B is in any layers that object A scans. See `Collision layers and masks <https://docs.godotengine.org/en/latest/tutorials/physics/physics_introduction.html#collision-layers-and-masks>`_ in the documentation for more information.
+
+----
+
 .. _class_CollisionObject_property_input_capture_on_drag:
 .. _class_CollisionObject_property_input_capture_on_drag:
 
 
 - :ref:`bool<class_bool>` **input_capture_on_drag**
 - :ref:`bool<class_bool>` **input_capture_on_drag**
@@ -131,9 +179,9 @@ Method Descriptions
 
 
 .. _class_CollisionObject_method__input_event:
 .. _class_CollisionObject_method__input_event:
 
 
-- void **_input_event** **(** :ref:`Object<class_Object>` camera, :ref:`InputEvent<class_InputEvent>` event, :ref:`Vector3<class_Vector3>` click_position, :ref:`Vector3<class_Vector3>` click_normal, :ref:`int<class_int>` shape_idx **)** |virtual|
+- void **_input_event** **(** :ref:`Object<class_Object>` camera, :ref:`InputEvent<class_InputEvent>` event, :ref:`Vector3<class_Vector3>` position, :ref:`Vector3<class_Vector3>` normal, :ref:`int<class_int>` shape_idx **)** |virtual|
 
 
-Accepts unhandled :ref:`InputEvent<class_InputEvent>`\ s. ``click_position`` is the clicked location in world space and ``click_normal`` is the normal vector extending from the clicked surface of the :ref:`Shape<class_Shape>` at ``shape_idx``. Connect to the ``input_event`` signal to easily pick up these events.
+Receives unhandled :ref:`InputEvent<class_InputEvent>`\ s. ``position`` is the location in world space of the mouse pointer on the surface of the shape with index ``shape_idx`` and ``normal`` is the normal vector of the surface at that point. Connect to the :ref:`input_event<class_CollisionObject_signal_input_event>` signal to easily pick up these events.
 
 
 ----
 ----
 
 
@@ -145,6 +193,22 @@ Creates a new shape owner for the given object. Returns ``owner_id`` of the new
 
 
 ----
 ----
 
 
+.. _class_CollisionObject_method_get_collision_layer_bit:
+
+- :ref:`bool<class_bool>` **get_collision_layer_bit** **(** :ref:`int<class_int>` bit **)** |const|
+
+Returns whether or not the specified ``bit`` of the :ref:`collision_layer<class_CollisionObject_property_collision_layer>` is set.
+
+----
+
+.. _class_CollisionObject_method_get_collision_mask_bit:
+
+- :ref:`bool<class_bool>` **get_collision_mask_bit** **(** :ref:`int<class_int>` bit **)** |const|
+
+Returns whether or not the specified ``bit`` of the :ref:`collision_mask<class_CollisionObject_property_collision_mask>` is set.
+
+----
+
 .. _class_CollisionObject_method_get_rid:
 .. _class_CollisionObject_method_get_rid:
 
 
 - :ref:`RID<class_RID>` **get_rid** **(** **)** |const|
 - :ref:`RID<class_RID>` **get_rid** **(** **)** |const|
@@ -177,6 +241,26 @@ Removes the given shape owner.
 
 
 ----
 ----
 
 
+.. _class_CollisionObject_method_set_collision_layer_bit:
+
+- void **set_collision_layer_bit** **(** :ref:`int<class_int>` bit, :ref:`bool<class_bool>` value **)**
+
+If ``value`` is ``true``, sets the specified ``bit`` in the the :ref:`collision_layer<class_CollisionObject_property_collision_layer>`.
+
+If ``value`` is ``false``, clears the specified ``bit`` in the the :ref:`collision_layer<class_CollisionObject_property_collision_layer>`.
+
+----
+
+.. _class_CollisionObject_method_set_collision_mask_bit:
+
+- void **set_collision_mask_bit** **(** :ref:`int<class_int>` bit, :ref:`bool<class_bool>` value **)**
+
+If ``value`` is ``true``, sets the specified ``bit`` in the the :ref:`collision_mask<class_CollisionObject_property_collision_mask>`.
+
+If ``value`` is ``false``, clears the specified ``bit`` in the the :ref:`collision_mask<class_CollisionObject_property_collision_mask>`.
+
+----
+
 .. _class_CollisionObject_method_shape_find_owner:
 .. _class_CollisionObject_method_shape_find_owner:
 
 
 - :ref:`int<class_int>` **shape_find_owner** **(** :ref:`int<class_int>` shape_index **)** |const|
 - :ref:`int<class_int>` **shape_find_owner** **(** :ref:`int<class_int>` shape_index **)** |const|

+ 87 - 3
classes/class_collisionobject2d.rst

@@ -23,9 +23,13 @@ CollisionObject2D is the base class for 2D physics objects. It can hold any numb
 Properties
 Properties
 ----------
 ----------
 
 
-+-------------------------+------------------------------------------------------------------------+----------+
-| :ref:`bool<class_bool>` | :ref:`input_pickable<class_CollisionObject2D_property_input_pickable>` | ``true`` |
-+-------------------------+------------------------------------------------------------------------+----------+
++-------------------------+--------------------------------------------------------------------------+----------+
+| :ref:`int<class_int>`   | :ref:`collision_layer<class_CollisionObject2D_property_collision_layer>` | ``1``    |
++-------------------------+--------------------------------------------------------------------------+----------+
+| :ref:`int<class_int>`   | :ref:`collision_mask<class_CollisionObject2D_property_collision_mask>`   | ``1``    |
++-------------------------+--------------------------------------------------------------------------+----------+
+| :ref:`bool<class_bool>` | :ref:`input_pickable<class_CollisionObject2D_property_input_pickable>`   | ``true`` |
++-------------------------+--------------------------------------------------------------------------+----------+
 
 
 Methods
 Methods
 -------
 -------
@@ -35,6 +39,10 @@ Methods
 +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                 | :ref:`create_shape_owner<class_CollisionObject2D_method_create_shape_owner>` **(** :ref:`Object<class_Object>` owner **)**                                                                              |
 | :ref:`int<class_int>`                 | :ref:`create_shape_owner<class_CollisionObject2D_method_create_shape_owner>` **(** :ref:`Object<class_Object>` owner **)**                                                                              |
 +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`               | :ref:`get_collision_layer_bit<class_CollisionObject2D_method_get_collision_layer_bit>` **(** :ref:`int<class_int>` bit **)** |const|                                                                    |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`               | :ref:`get_collision_mask_bit<class_CollisionObject2D_method_get_collision_mask_bit>` **(** :ref:`int<class_int>` bit **)** |const|                                                                      |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`RID<class_RID>`                 | :ref:`get_rid<class_CollisionObject2D_method_get_rid>` **(** **)** |const|                                                                                                                              |
 | :ref:`RID<class_RID>`                 | :ref:`get_rid<class_CollisionObject2D_method_get_rid>` **(** **)** |const|                                                                                                                              |
 +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`float<class_float>`             | :ref:`get_shape_owner_one_way_collision_margin<class_CollisionObject2D_method_get_shape_owner_one_way_collision_margin>` **(** :ref:`int<class_int>` owner_id **)** |const|                             |
 | :ref:`float<class_float>`             | :ref:`get_shape_owner_one_way_collision_margin<class_CollisionObject2D_method_get_shape_owner_one_way_collision_margin>` **(** :ref:`int<class_int>` owner_id **)** |const|                             |
@@ -47,6 +55,10 @@ Methods
 +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                  | :ref:`remove_shape_owner<class_CollisionObject2D_method_remove_shape_owner>` **(** :ref:`int<class_int>` owner_id **)**                                                                                 |
 | void                                  | :ref:`remove_shape_owner<class_CollisionObject2D_method_remove_shape_owner>` **(** :ref:`int<class_int>` owner_id **)**                                                                                 |
 +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`set_collision_layer_bit<class_CollisionObject2D_method_set_collision_layer_bit>` **(** :ref:`int<class_int>` bit, :ref:`bool<class_bool>` value **)**                                             |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`set_collision_mask_bit<class_CollisionObject2D_method_set_collision_mask_bit>` **(** :ref:`int<class_int>` bit, :ref:`bool<class_bool>` value **)**                                               |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                 | :ref:`shape_find_owner<class_CollisionObject2D_method_shape_find_owner>` **(** :ref:`int<class_int>` shape_index **)** |const|                                                                          |
 | :ref:`int<class_int>`                 | :ref:`shape_find_owner<class_CollisionObject2D_method_shape_find_owner>` **(** :ref:`int<class_int>` shape_index **)** |const|                                                                          |
 +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                  | :ref:`shape_owner_add_shape<class_CollisionObject2D_method_shape_owner_add_shape>` **(** :ref:`int<class_int>` owner_id, :ref:`Shape2D<class_Shape2D>` shape **)**                                      |
 | void                                  | :ref:`shape_owner_add_shape<class_CollisionObject2D_method_shape_owner_add_shape>` **(** :ref:`int<class_int>` owner_id, :ref:`Shape2D<class_Shape2D>` shape **)**                                      |
@@ -102,6 +114,42 @@ Emitted when the mouse pointer exits all this object's shapes. Requires :ref:`in
 Property Descriptions
 Property Descriptions
 ---------------------
 ---------------------
 
 
+.. _class_CollisionObject2D_property_collision_layer:
+
+- :ref:`int<class_int>` **collision_layer**
+
++-----------+----------------------------+
+| *Default* | ``1``                      |
++-----------+----------------------------+
+| *Setter*  | set_collision_layer(value) |
++-----------+----------------------------+
+| *Getter*  | get_collision_layer()      |
++-----------+----------------------------+
+
+The physics layers this CollisionObject2D is in. Collision objects can exist in one or more of 32 different layers. See also :ref:`collision_mask<class_CollisionObject2D_property_collision_mask>`.
+
+**Note:** A contact is detected if object A is in any of the layers that object B scans, or object B is in any layers that object A scans. See `Collision layers and masks <https://docs.godotengine.org/en/latest/tutorials/physics/physics_introduction.html#collision-layers-and-masks>`_ in the documentation for more information.
+
+----
+
+.. _class_CollisionObject2D_property_collision_mask:
+
+- :ref:`int<class_int>` **collision_mask**
+
++-----------+---------------------------+
+| *Default* | ``1``                     |
++-----------+---------------------------+
+| *Setter*  | set_collision_mask(value) |
++-----------+---------------------------+
+| *Getter*  | get_collision_mask()      |
++-----------+---------------------------+
+
+The physics layers this CollisionObject2D scans. Collision objects can scan one or more of 32 different layers. See also :ref:`collision_layer<class_CollisionObject2D_property_collision_layer>`.
+
+**Note:** A contact is detected if object A is in any of the layers that object B scans, or object B is in any layers that object A scans. See `Collision layers and masks <https://docs.godotengine.org/en/latest/tutorials/physics/physics_introduction.html#collision-layers-and-masks>`_ in the documentation for more information.
+
+----
+
 .. _class_CollisionObject2D_property_input_pickable:
 .. _class_CollisionObject2D_property_input_pickable:
 
 
 - :ref:`bool<class_bool>` **input_pickable**
 - :ref:`bool<class_bool>` **input_pickable**
@@ -135,6 +183,22 @@ Creates a new shape owner for the given object. Returns ``owner_id`` of the new
 
 
 ----
 ----
 
 
+.. _class_CollisionObject2D_method_get_collision_layer_bit:
+
+- :ref:`bool<class_bool>` **get_collision_layer_bit** **(** :ref:`int<class_int>` bit **)** |const|
+
+Returns whether or not the specified ``bit`` of the :ref:`collision_layer<class_CollisionObject2D_property_collision_layer>` is set.
+
+----
+
+.. _class_CollisionObject2D_method_get_collision_mask_bit:
+
+- :ref:`bool<class_bool>` **get_collision_mask_bit** **(** :ref:`int<class_int>` bit **)** |const|
+
+Returns whether or not the specified ``bit`` of the :ref:`collision_mask<class_CollisionObject2D_property_collision_mask>` is set.
+
+----
+
 .. _class_CollisionObject2D_method_get_rid:
 .. _class_CollisionObject2D_method_get_rid:
 
 
 - :ref:`RID<class_RID>` **get_rid** **(** **)** |const|
 - :ref:`RID<class_RID>` **get_rid** **(** **)** |const|
@@ -183,6 +247,26 @@ Removes the given shape owner.
 
 
 ----
 ----
 
 
+.. _class_CollisionObject2D_method_set_collision_layer_bit:
+
+- void **set_collision_layer_bit** **(** :ref:`int<class_int>` bit, :ref:`bool<class_bool>` value **)**
+
+If ``value`` is ``true``, sets the specified ``bit`` in the the :ref:`collision_layer<class_CollisionObject2D_property_collision_layer>`.
+
+If ``value`` is ``false``, clears the specified ``bit`` in the the :ref:`collision_layer<class_CollisionObject2D_property_collision_layer>`.
+
+----
+
+.. _class_CollisionObject2D_method_set_collision_mask_bit:
+
+- void **set_collision_mask_bit** **(** :ref:`int<class_int>` bit, :ref:`bool<class_bool>` value **)**
+
+If ``value`` is ``true``, sets the specified ``bit`` in the the :ref:`collision_mask<class_CollisionObject2D_property_collision_mask>`.
+
+If ``value`` is ``false``, clears the specified ``bit`` in the the :ref:`collision_mask<class_CollisionObject2D_property_collision_mask>`.
+
+----
+
 .. _class_CollisionObject2D_method_shape_find_owner:
 .. _class_CollisionObject2D_method_shape_find_owner:
 
 
 - :ref:`int<class_int>` **shape_find_owner** **(** :ref:`int<class_int>` shape_index **)** |const|
 - :ref:`int<class_int>` **shape_find_owner** **(** :ref:`int<class_int>` shape_index **)** |const|

+ 11 - 7
classes/class_control.rst

@@ -24,7 +24,7 @@ For more information on Godot's UI system, anchors, margins, and containers, see
 
 
 **User Interface nodes and input**
 **User Interface nodes and input**
 
 
-Godot sends input events to the scene's root node first, by calling :ref:`Node._input<class_Node_method__input>`. :ref:`Node._input<class_Node_method__input>` forwards the event down the node tree to the nodes under the mouse cursor, or on keyboard focus. To do so, it calls :ref:`MainLoop._input_event<class_MainLoop_method__input_event>`. Call :ref:`accept_event<class_Control_method_accept_event>` so no other node receives the event. Once you accepted an input, it becomes handled so :ref:`Node._unhandled_input<class_Node_method__unhandled_input>` will not process it.
+Godot sends input events to the scene's root node first, by calling :ref:`Node._input<class_Node_method__input>`. :ref:`Node._input<class_Node_method__input>` forwards the event down the node tree to the nodes under the mouse cursor, or on keyboard focus. To do so, it calls :ref:`MainLoop._input_event<class_MainLoop_method__input_event>`. Call :ref:`accept_event<class_Control_method_accept_event>` so no other node receives the event. Once you accept an input, it becomes handled so :ref:`Node._unhandled_input<class_Node_method__unhandled_input>` will not process it.
 
 
 Only one ``Control`` node can be in keyboard focus. Only the node in focus will receive keyboard events. To get the focus, call :ref:`grab_focus<class_Control_method_grab_focus>`. ``Control`` nodes lose focus when another node grabs it, or if you hide the node in focus.
 Only one ``Control`` node can be in keyboard focus. Only the node in focus will receive keyboard events. To get the focus, call :ref:`grab_focus<class_Control_method_grab_focus>`. ``Control`` nodes lose focus when another node grabs it, or if you hide the node in focus.
 
 
@@ -312,6 +312,8 @@ Emitted when a modal ``Control`` is closed. See :ref:`show_modal<class_Control_m
 
 
 Emitted when the mouse enters the control's ``Rect`` area, provided its :ref:`mouse_filter<class_Control_property_mouse_filter>` lets the event reach it.
 Emitted when the mouse enters the control's ``Rect`` area, provided its :ref:`mouse_filter<class_Control_property_mouse_filter>` lets the event reach it.
 
 
+**Note:** :ref:`mouse_entered<class_Control_signal_mouse_entered>` will not be emitted if the mouse enters a child ``Control`` node before entering the parent's ``Rect`` area, at least until the mouse is moved to reach the parent's ``Rect`` area.
+
 ----
 ----
 
 
 .. _class_Control_signal_mouse_exited:
 .. _class_Control_signal_mouse_exited:
@@ -320,6 +322,8 @@ Emitted when the mouse enters the control's ``Rect`` area, provided its :ref:`mo
 
 
 Emitted when the mouse leaves the control's ``Rect`` area, provided its :ref:`mouse_filter<class_Control_property_mouse_filter>` lets the event reach it.
 Emitted when the mouse leaves the control's ``Rect`` area, provided its :ref:`mouse_filter<class_Control_property_mouse_filter>` lets the event reach it.
 
 
+**Note:** :ref:`mouse_exited<class_Control_signal_mouse_exited>` will be emitted if the mouse enters a child ``Control`` node, even if the mouse cursor is still inside the parent's ``Rect`` area.
+
 ----
 ----
 
 
 .. _class_Control_signal_resized:
 .. _class_Control_signal_resized:
@@ -691,7 +695,7 @@ Anchors the right edge of the node to the origin, the center or the end of its p
 | *Getter*  | get_anchor() |
 | *Getter*  | get_anchor() |
 +-----------+--------------+
 +-----------+--------------+
 
 
-Anchors the top edge of the node to the origin, the center or the end of its parent control. It changes how the top margin updates when the node moves or changes size. You can use  one of the :ref:`Anchor<enum_Control_Anchor>` constants for convenience.
+Anchors the top edge of the node to the origin, the center or the end of its parent control. It changes how the top margin updates when the node moves or changes size. You can use one of the :ref:`Anchor<enum_Control_Anchor>` constants for convenience.
 
 
 ----
 ----
 
 
@@ -755,7 +759,7 @@ Tells Godot which node it should give keyboard focus to if the user presses the
 | *Getter*  | get_focus_neighbour()      |
 | *Getter*  | get_focus_neighbour()      |
 +-----------+----------------------------+
 +-----------+----------------------------+
 
 
-Tells Godot which node it should give keyboard focus to if the user presses the right arrow on the keyboard or right on a gamepad  by default. You can change the key by editing the ``ui_right`` input action. The node must be a ``Control``. If this property is not set, Godot will give focus to the closest ``Control`` to the bottom of this one.
+Tells Godot which node it should give keyboard focus to if the user presses the right arrow on the keyboard or right on a gamepad by default. You can change the key by editing the ``ui_right`` input action. The node must be a ``Control``. If this property is not set, Godot will give focus to the closest ``Control`` to the bottom of this one.
 
 
 ----
 ----
 
 
@@ -1224,7 +1228,7 @@ The event won't trigger if:
 
 
 \* control's parent has :ref:`mouse_filter<class_Control_property_mouse_filter>` set to :ref:`MOUSE_FILTER_STOP<class_Control_constant_MOUSE_FILTER_STOP>` or has accepted the event;
 \* control's parent has :ref:`mouse_filter<class_Control_property_mouse_filter>` set to :ref:`MOUSE_FILTER_STOP<class_Control_constant_MOUSE_FILTER_STOP>` or has accepted the event;
 
 
-\* it happens outside parent's rectangle and the parent has either :ref:`rect_clip_content<class_Control_property_rect_clip_content>` or :ref:`_clips_input<class_Control_method__clips_input>` enabled.
+\* it happens outside the parent's rectangle and the parent has either :ref:`rect_clip_content<class_Control_property_rect_clip_content>` or :ref:`_clips_input<class_Control_method__clips_input>` enabled.
 
 
 ----
 ----
 
 
@@ -1234,7 +1238,7 @@ The event won't trigger if:
 
 
 Virtual method to be implemented by the user. Returns a ``Control`` node that should be used as a tooltip instead of the default one. The ``for_text`` includes the contents of the :ref:`hint_tooltip<class_Control_property_hint_tooltip>` property.
 Virtual method to be implemented by the user. Returns a ``Control`` node that should be used as a tooltip instead of the default one. The ``for_text`` includes the contents of the :ref:`hint_tooltip<class_Control_property_hint_tooltip>` property.
 
 
-The returned node must be of type ``Control`` or Control-derived. It can have child nodes of any type. It is freed when the tooltip disappears, so make sure you always provide a new instance (if you want to use a pre-existing node from your scene tree, you can duplicate it and pass the duplicated instance).When ``null`` or a non-Control node is returned, the default tooltip will be used instead.
+The returned node must be of type ``Control`` or Control-derived. It can have child nodes of any type. It is freed when the tooltip disappears, so make sure you always provide a new instance (if you want to use a pre-existing node from your scene tree, you can duplicate it and pass the duplicated instance). When ``null`` or a non-Control node is returned, the default tooltip will be used instead.
 
 
 The returned node will be added as child to a :ref:`PopupPanel<class_PopupPanel>`, so you should only provide the contents of that panel. That :ref:`PopupPanel<class_PopupPanel>` can be themed using :ref:`Theme.set_stylebox<class_Theme_method_set_stylebox>` for the type ``"TooltipPanel"`` (see :ref:`hint_tooltip<class_Control_property_hint_tooltip>` for an example).
 The returned node will be added as child to a :ref:`PopupPanel<class_PopupPanel>`, so you should only provide the contents of that panel. That :ref:`PopupPanel<class_PopupPanel>` can be themed using :ref:`Theme.set_stylebox<class_Theme_method_set_stylebox>` for the type ``"TooltipPanel"`` (see :ref:`hint_tooltip<class_Control_property_hint_tooltip>` for an example).
 
 
@@ -1762,7 +1766,7 @@ Sets both anchor preset and margin preset. See :ref:`set_anchors_preset<class_Co
 
 
 - void **set_anchors_preset** **(** :ref:`LayoutPreset<enum_Control_LayoutPreset>` preset, :ref:`bool<class_bool>` keep_margins=false **)**
 - void **set_anchors_preset** **(** :ref:`LayoutPreset<enum_Control_LayoutPreset>` preset, :ref:`bool<class_bool>` keep_margins=false **)**
 
 
-Sets the anchors to a ``preset`` from :ref:`LayoutPreset<enum_Control_LayoutPreset>` enum. This is code equivalent of using the Layout menu in 2D editor.
+Sets the anchors to a ``preset`` from :ref:`LayoutPreset<enum_Control_LayoutPreset>` enum. This is the code equivalent to using the Layout menu in the 2D editor.
 
 
 If ``keep_margins`` is ``true``, control's position will also be updated.
 If ``keep_margins`` is ``true``, control's position will also be updated.
 
 
@@ -1867,7 +1871,7 @@ Sets the margin identified by ``margin`` constant from :ref:`Margin<enum_@Global
 
 
 - void **set_margins_preset** **(** :ref:`LayoutPreset<enum_Control_LayoutPreset>` preset, :ref:`LayoutPresetMode<enum_Control_LayoutPresetMode>` resize_mode=0, :ref:`int<class_int>` margin=0 **)**
 - void **set_margins_preset** **(** :ref:`LayoutPreset<enum_Control_LayoutPreset>` preset, :ref:`LayoutPresetMode<enum_Control_LayoutPresetMode>` resize_mode=0, :ref:`int<class_int>` margin=0 **)**
 
 
-Sets the margins to a ``preset`` from :ref:`LayoutPreset<enum_Control_LayoutPreset>` enum. This is code equivalent of using the Layout menu in 2D editor.
+Sets the margins to a ``preset`` from :ref:`LayoutPreset<enum_Control_LayoutPreset>` enum. This is the code equivalent to using the Layout menu in the 2D editor.
 
 
 Use parameter ``resize_mode`` with constants from :ref:`LayoutPresetMode<enum_Control_LayoutPresetMode>` to better determine the resulting size of the ``Control``. Constant size will be ignored if used with presets that change size, e.g. ``PRESET_LEFT_WIDE``.
 Use parameter ``resize_mode`` with constants from :ref:`LayoutPresetMode<enum_Control_LayoutPresetMode>` to better determine the resulting size of the ``Control``. Constant size will be ignored if used with presets that change size, e.g. ``PRESET_LEFT_WIDE``.
 
 

+ 211 - 147
classes/class_cpuparticles.rst

@@ -9,7 +9,7 @@
 CPUParticles
 CPUParticles
 ============
 ============
 
 
-**Inherits:** :ref:`GeometryInstance<class_GeometryInstance>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`GeometryInstance<class_GeometryInstance>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`CullInstance<class_CullInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
 
 CPU-based 3D particle emitter.
 CPU-based 3D particle emitter.
 
 
@@ -25,135 +25,143 @@ See also :ref:`Particles<class_Particles>`, which provides the same functionalit
 Properties
 Properties
 ----------
 ----------
 
 
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`int<class_int>`                                 | :ref:`amount<class_CPUParticles_property_amount>`                                   | ``8``                     |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                             | :ref:`angle<class_CPUParticles_property_angle>`                                     | ``0.0``                   |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Curve<class_Curve>`                             | :ref:`angle_curve<class_CPUParticles_property_angle_curve>`                         |                           |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                             | :ref:`angle_random<class_CPUParticles_property_angle_random>`                       | ``0.0``                   |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                             | :ref:`angular_velocity<class_CPUParticles_property_angular_velocity>`               | ``0.0``                   |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Curve<class_Curve>`                             | :ref:`angular_velocity_curve<class_CPUParticles_property_angular_velocity_curve>`   |                           |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                             | :ref:`angular_velocity_random<class_CPUParticles_property_angular_velocity_random>` | ``0.0``                   |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                             | :ref:`anim_offset<class_CPUParticles_property_anim_offset>`                         | ``0.0``                   |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Curve<class_Curve>`                             | :ref:`anim_offset_curve<class_CPUParticles_property_anim_offset_curve>`             |                           |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                             | :ref:`anim_offset_random<class_CPUParticles_property_anim_offset_random>`           | ``0.0``                   |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                             | :ref:`anim_speed<class_CPUParticles_property_anim_speed>`                           | ``0.0``                   |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Curve<class_Curve>`                             | :ref:`anim_speed_curve<class_CPUParticles_property_anim_speed_curve>`               |                           |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                             | :ref:`anim_speed_random<class_CPUParticles_property_anim_speed_random>`             | ``0.0``                   |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Color<class_Color>`                             | :ref:`color<class_CPUParticles_property_color>`                                     | ``Color( 1, 1, 1, 1 )``   |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Gradient<class_Gradient>`                       | :ref:`color_ramp<class_CPUParticles_property_color_ramp>`                           |                           |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                             | :ref:`damping<class_CPUParticles_property_damping>`                                 | ``0.0``                   |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Curve<class_Curve>`                             | :ref:`damping_curve<class_CPUParticles_property_damping_curve>`                     |                           |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                             | :ref:`damping_random<class_CPUParticles_property_damping_random>`                   | ``0.0``                   |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Vector3<class_Vector3>`                         | :ref:`direction<class_CPUParticles_property_direction>`                             | ``Vector3( 1, 0, 0 )``    |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`DrawOrder<enum_CPUParticles_DrawOrder>`         | :ref:`draw_order<class_CPUParticles_property_draw_order>`                           | ``0``                     |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Vector3<class_Vector3>`                         | :ref:`emission_box_extents<class_CPUParticles_property_emission_box_extents>`       |                           |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`PoolColorArray<class_PoolColorArray>`           | :ref:`emission_colors<class_CPUParticles_property_emission_colors>`                 | ``PoolColorArray(  )``    |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`PoolVector3Array<class_PoolVector3Array>`       | :ref:`emission_normals<class_CPUParticles_property_emission_normals>`               |                           |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`PoolVector3Array<class_PoolVector3Array>`       | :ref:`emission_points<class_CPUParticles_property_emission_points>`                 | ``PoolVector3Array(  )``  |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`EmissionShape<enum_CPUParticles_EmissionShape>` | :ref:`emission_shape<class_CPUParticles_property_emission_shape>`                   | ``0``                     |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                             | :ref:`emission_sphere_radius<class_CPUParticles_property_emission_sphere_radius>`   |                           |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`bool<class_bool>`                               | :ref:`emitting<class_CPUParticles_property_emitting>`                               | ``true``                  |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                             | :ref:`explosiveness<class_CPUParticles_property_explosiveness>`                     | ``0.0``                   |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`int<class_int>`                                 | :ref:`fixed_fps<class_CPUParticles_property_fixed_fps>`                             | ``0``                     |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`bool<class_bool>`                               | :ref:`flag_align_y<class_CPUParticles_property_flag_align_y>`                       | ``false``                 |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`bool<class_bool>`                               | :ref:`flag_disable_z<class_CPUParticles_property_flag_disable_z>`                   | ``false``                 |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`bool<class_bool>`                               | :ref:`flag_rotate_y<class_CPUParticles_property_flag_rotate_y>`                     | ``false``                 |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                             | :ref:`flatness<class_CPUParticles_property_flatness>`                               | ``0.0``                   |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`bool<class_bool>`                               | :ref:`fract_delta<class_CPUParticles_property_fract_delta>`                         | ``true``                  |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Vector3<class_Vector3>`                         | :ref:`gravity<class_CPUParticles_property_gravity>`                                 | ``Vector3( 0, -9.8, 0 )`` |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                             | :ref:`hue_variation<class_CPUParticles_property_hue_variation>`                     | ``0.0``                   |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Curve<class_Curve>`                             | :ref:`hue_variation_curve<class_CPUParticles_property_hue_variation_curve>`         |                           |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                             | :ref:`hue_variation_random<class_CPUParticles_property_hue_variation_random>`       | ``0.0``                   |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                             | :ref:`initial_velocity<class_CPUParticles_property_initial_velocity>`               | ``0.0``                   |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                             | :ref:`initial_velocity_random<class_CPUParticles_property_initial_velocity_random>` | ``0.0``                   |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                             | :ref:`lifetime<class_CPUParticles_property_lifetime>`                               | ``1.0``                   |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                             | :ref:`lifetime_randomness<class_CPUParticles_property_lifetime_randomness>`         | ``0.0``                   |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                             | :ref:`linear_accel<class_CPUParticles_property_linear_accel>`                       | ``0.0``                   |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Curve<class_Curve>`                             | :ref:`linear_accel_curve<class_CPUParticles_property_linear_accel_curve>`           |                           |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                             | :ref:`linear_accel_random<class_CPUParticles_property_linear_accel_random>`         | ``0.0``                   |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`bool<class_bool>`                               | :ref:`local_coords<class_CPUParticles_property_local_coords>`                       | ``true``                  |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Mesh<class_Mesh>`                               | :ref:`mesh<class_CPUParticles_property_mesh>`                                       |                           |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`bool<class_bool>`                               | :ref:`one_shot<class_CPUParticles_property_one_shot>`                               | ``false``                 |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                             | :ref:`orbit_velocity<class_CPUParticles_property_orbit_velocity>`                   |                           |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Curve<class_Curve>`                             | :ref:`orbit_velocity_curve<class_CPUParticles_property_orbit_velocity_curve>`       |                           |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                             | :ref:`orbit_velocity_random<class_CPUParticles_property_orbit_velocity_random>`     |                           |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                             | :ref:`preprocess<class_CPUParticles_property_preprocess>`                           | ``0.0``                   |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                             | :ref:`radial_accel<class_CPUParticles_property_radial_accel>`                       | ``0.0``                   |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Curve<class_Curve>`                             | :ref:`radial_accel_curve<class_CPUParticles_property_radial_accel_curve>`           |                           |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                             | :ref:`radial_accel_random<class_CPUParticles_property_radial_accel_random>`         | ``0.0``                   |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                             | :ref:`randomness<class_CPUParticles_property_randomness>`                           | ``0.0``                   |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                             | :ref:`scale_amount<class_CPUParticles_property_scale_amount>`                       | ``1.0``                   |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Curve<class_Curve>`                             | :ref:`scale_amount_curve<class_CPUParticles_property_scale_amount_curve>`           |                           |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                             | :ref:`scale_amount_random<class_CPUParticles_property_scale_amount_random>`         | ``0.0``                   |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                             | :ref:`speed_scale<class_CPUParticles_property_speed_scale>`                         | ``1.0``                   |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                             | :ref:`spread<class_CPUParticles_property_spread>`                                   | ``45.0``                  |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                             | :ref:`tangential_accel<class_CPUParticles_property_tangential_accel>`               | ``0.0``                   |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Curve<class_Curve>`                             | :ref:`tangential_accel_curve<class_CPUParticles_property_tangential_accel_curve>`   |                           |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                             | :ref:`tangential_accel_random<class_CPUParticles_property_tangential_accel_random>` | ``0.0``                   |
-+-------------------------------------------------------+-------------------------------------------------------------------------------------+---------------------------+
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`int<class_int>`                                 | :ref:`amount<class_CPUParticles_property_amount>`                                         | ``8``                     |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`angle<class_CPUParticles_property_angle>`                                           | ``0.0``                   |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Curve<class_Curve>`                             | :ref:`angle_curve<class_CPUParticles_property_angle_curve>`                               |                           |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`angle_random<class_CPUParticles_property_angle_random>`                             | ``0.0``                   |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`angular_velocity<class_CPUParticles_property_angular_velocity>`                     | ``0.0``                   |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Curve<class_Curve>`                             | :ref:`angular_velocity_curve<class_CPUParticles_property_angular_velocity_curve>`         |                           |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`angular_velocity_random<class_CPUParticles_property_angular_velocity_random>`       | ``0.0``                   |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`anim_offset<class_CPUParticles_property_anim_offset>`                               | ``0.0``                   |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Curve<class_Curve>`                             | :ref:`anim_offset_curve<class_CPUParticles_property_anim_offset_curve>`                   |                           |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`anim_offset_random<class_CPUParticles_property_anim_offset_random>`                 | ``0.0``                   |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`anim_speed<class_CPUParticles_property_anim_speed>`                                 | ``0.0``                   |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Curve<class_Curve>`                             | :ref:`anim_speed_curve<class_CPUParticles_property_anim_speed_curve>`                     |                           |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`anim_speed_random<class_CPUParticles_property_anim_speed_random>`                   | ``0.0``                   |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Color<class_Color>`                             | :ref:`color<class_CPUParticles_property_color>`                                           | ``Color( 1, 1, 1, 1 )``   |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Gradient<class_Gradient>`                       | :ref:`color_ramp<class_CPUParticles_property_color_ramp>`                                 |                           |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`damping<class_CPUParticles_property_damping>`                                       | ``0.0``                   |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Curve<class_Curve>`                             | :ref:`damping_curve<class_CPUParticles_property_damping_curve>`                           |                           |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`damping_random<class_CPUParticles_property_damping_random>`                         | ``0.0``                   |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Vector3<class_Vector3>`                         | :ref:`direction<class_CPUParticles_property_direction>`                                   | ``Vector3( 1, 0, 0 )``    |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`DrawOrder<enum_CPUParticles_DrawOrder>`         | :ref:`draw_order<class_CPUParticles_property_draw_order>`                                 | ``0``                     |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Vector3<class_Vector3>`                         | :ref:`emission_box_extents<class_CPUParticles_property_emission_box_extents>`             |                           |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`PoolColorArray<class_PoolColorArray>`           | :ref:`emission_colors<class_CPUParticles_property_emission_colors>`                       |                           |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`PoolVector3Array<class_PoolVector3Array>`       | :ref:`emission_normals<class_CPUParticles_property_emission_normals>`                     |                           |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`PoolVector3Array<class_PoolVector3Array>`       | :ref:`emission_points<class_CPUParticles_property_emission_points>`                       |                           |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Vector3<class_Vector3>`                         | :ref:`emission_ring_axis<class_CPUParticles_property_emission_ring_axis>`                 |                           |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`emission_ring_height<class_CPUParticles_property_emission_ring_height>`             |                           |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`emission_ring_inner_radius<class_CPUParticles_property_emission_ring_inner_radius>` |                           |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`emission_ring_radius<class_CPUParticles_property_emission_ring_radius>`             |                           |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`EmissionShape<enum_CPUParticles_EmissionShape>` | :ref:`emission_shape<class_CPUParticles_property_emission_shape>`                         | ``0``                     |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`emission_sphere_radius<class_CPUParticles_property_emission_sphere_radius>`         |                           |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`bool<class_bool>`                               | :ref:`emitting<class_CPUParticles_property_emitting>`                                     | ``true``                  |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`explosiveness<class_CPUParticles_property_explosiveness>`                           | ``0.0``                   |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`int<class_int>`                                 | :ref:`fixed_fps<class_CPUParticles_property_fixed_fps>`                                   | ``0``                     |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`bool<class_bool>`                               | :ref:`flag_align_y<class_CPUParticles_property_flag_align_y>`                             | ``false``                 |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`bool<class_bool>`                               | :ref:`flag_disable_z<class_CPUParticles_property_flag_disable_z>`                         | ``false``                 |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`bool<class_bool>`                               | :ref:`flag_rotate_y<class_CPUParticles_property_flag_rotate_y>`                           | ``false``                 |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`flatness<class_CPUParticles_property_flatness>`                                     | ``0.0``                   |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`bool<class_bool>`                               | :ref:`fract_delta<class_CPUParticles_property_fract_delta>`                               | ``true``                  |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Vector3<class_Vector3>`                         | :ref:`gravity<class_CPUParticles_property_gravity>`                                       | ``Vector3( 0, -9.8, 0 )`` |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`hue_variation<class_CPUParticles_property_hue_variation>`                           | ``0.0``                   |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Curve<class_Curve>`                             | :ref:`hue_variation_curve<class_CPUParticles_property_hue_variation_curve>`               |                           |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`hue_variation_random<class_CPUParticles_property_hue_variation_random>`             | ``0.0``                   |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`initial_velocity<class_CPUParticles_property_initial_velocity>`                     | ``0.0``                   |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`initial_velocity_random<class_CPUParticles_property_initial_velocity_random>`       | ``0.0``                   |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`lifetime<class_CPUParticles_property_lifetime>`                                     | ``1.0``                   |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`lifetime_randomness<class_CPUParticles_property_lifetime_randomness>`               | ``0.0``                   |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`linear_accel<class_CPUParticles_property_linear_accel>`                             | ``0.0``                   |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Curve<class_Curve>`                             | :ref:`linear_accel_curve<class_CPUParticles_property_linear_accel_curve>`                 |                           |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`linear_accel_random<class_CPUParticles_property_linear_accel_random>`               | ``0.0``                   |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`bool<class_bool>`                               | :ref:`local_coords<class_CPUParticles_property_local_coords>`                             | ``true``                  |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Mesh<class_Mesh>`                               | :ref:`mesh<class_CPUParticles_property_mesh>`                                             |                           |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`bool<class_bool>`                               | :ref:`one_shot<class_CPUParticles_property_one_shot>`                                     | ``false``                 |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`orbit_velocity<class_CPUParticles_property_orbit_velocity>`                         |                           |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Curve<class_Curve>`                             | :ref:`orbit_velocity_curve<class_CPUParticles_property_orbit_velocity_curve>`             |                           |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`orbit_velocity_random<class_CPUParticles_property_orbit_velocity_random>`           |                           |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`preprocess<class_CPUParticles_property_preprocess>`                                 | ``0.0``                   |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`radial_accel<class_CPUParticles_property_radial_accel>`                             | ``0.0``                   |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Curve<class_Curve>`                             | :ref:`radial_accel_curve<class_CPUParticles_property_radial_accel_curve>`                 |                           |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`radial_accel_random<class_CPUParticles_property_radial_accel_random>`               | ``0.0``                   |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`randomness<class_CPUParticles_property_randomness>`                                 | ``0.0``                   |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`scale_amount<class_CPUParticles_property_scale_amount>`                             | ``1.0``                   |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Curve<class_Curve>`                             | :ref:`scale_amount_curve<class_CPUParticles_property_scale_amount_curve>`                 |                           |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`scale_amount_random<class_CPUParticles_property_scale_amount_random>`               | ``0.0``                   |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`speed_scale<class_CPUParticles_property_speed_scale>`                               | ``1.0``                   |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`spread<class_CPUParticles_property_spread>`                                         | ``45.0``                  |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`tangential_accel<class_CPUParticles_property_tangential_accel>`                     | ``0.0``                   |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Curve<class_Curve>`                             | :ref:`tangential_accel_curve<class_CPUParticles_property_tangential_accel_curve>`         |                           |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                             | :ref:`tangential_accel_random<class_CPUParticles_property_tangential_accel_random>`       | ``0.0``                   |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
 
 
 Methods
 Methods
 -------
 -------
@@ -293,6 +301,8 @@ enum **Flags**:
 
 
 .. _class_CPUParticles_constant_EMISSION_SHAPE_DIRECTED_POINTS:
 .. _class_CPUParticles_constant_EMISSION_SHAPE_DIRECTED_POINTS:
 
 
+.. _class_CPUParticles_constant_EMISSION_SHAPE_RING:
+
 .. _class_CPUParticles_constant_EMISSION_SHAPE_MAX:
 .. _class_CPUParticles_constant_EMISSION_SHAPE_MAX:
 
 
 enum **EmissionShape**:
 enum **EmissionShape**:
@@ -307,7 +317,9 @@ enum **EmissionShape**:
 
 
 - **EMISSION_SHAPE_DIRECTED_POINTS** = **4** --- Particles will be emitted at a position chosen randomly among :ref:`emission_points<class_CPUParticles_property_emission_points>`. Particle velocity and rotation will be set based on :ref:`emission_normals<class_CPUParticles_property_emission_normals>`. Particle color will be modulated by :ref:`emission_colors<class_CPUParticles_property_emission_colors>`.
 - **EMISSION_SHAPE_DIRECTED_POINTS** = **4** --- Particles will be emitted at a position chosen randomly among :ref:`emission_points<class_CPUParticles_property_emission_points>`. Particle velocity and rotation will be set based on :ref:`emission_normals<class_CPUParticles_property_emission_normals>`. Particle color will be modulated by :ref:`emission_colors<class_CPUParticles_property_emission_colors>`.
 
 
-- **EMISSION_SHAPE_MAX** = **5** --- Represents the size of the :ref:`EmissionShape<enum_CPUParticles_EmissionShape>` enum.
+- **EMISSION_SHAPE_RING** = **5** --- Particles will be emitted in a ring or cylinder.
+
+- **EMISSION_SHAPE_MAX** = **6** --- Represents the size of the :ref:`EmissionShape<enum_CPUParticles_EmissionShape>` enum.
 
 
 Property Descriptions
 Property Descriptions
 ---------------------
 ---------------------
@@ -526,7 +538,7 @@ Animation speed randomness ratio.
 | *Getter*  | get_color()             |
 | *Getter*  | get_color()             |
 +-----------+-------------------------+
 +-----------+-------------------------+
 
 
-Unused for 3D particles.
+Each particle's initial color. To have particle display color in a :ref:`SpatialMaterial<class_SpatialMaterial>` make sure to set :ref:`SpatialMaterial.vertex_color_use_as_albedo<class_SpatialMaterial_property_vertex_color_use_as_albedo>` to ``true``.
 
 
 ----
 ----
 
 
@@ -540,7 +552,7 @@ Unused for 3D particles.
 | *Getter* | get_color_ramp()      |
 | *Getter* | get_color_ramp()      |
 +----------+-----------------------+
 +----------+-----------------------+
 
 
-Unused for 3D particles.
+Each particle's color will vary along this :ref:`GradientTexture<class_GradientTexture>` over its lifetime (multiplied with :ref:`color<class_CPUParticles_property_color>`).
 
 
 ----
 ----
 
 
@@ -640,13 +652,11 @@ The rectangle's extents if :ref:`emission_shape<class_CPUParticles_property_emis
 
 
 - :ref:`PoolColorArray<class_PoolColorArray>` **emission_colors**
 - :ref:`PoolColorArray<class_PoolColorArray>` **emission_colors**
 
 
-+-----------+----------------------------+
-| *Default* | ``PoolColorArray(  )``     |
-+-----------+----------------------------+
-| *Setter*  | set_emission_colors(value) |
-+-----------+----------------------------+
-| *Getter*  | get_emission_colors()      |
-+-----------+----------------------------+
++----------+----------------------------+
+| *Setter* | set_emission_colors(value) |
++----------+----------------------------+
+| *Getter* | get_emission_colors()      |
++----------+----------------------------+
 
 
 Sets the :ref:`Color<class_Color>`\ s to modulate particles by when using :ref:`EMISSION_SHAPE_POINTS<class_CPUParticles_constant_EMISSION_SHAPE_POINTS>` or :ref:`EMISSION_SHAPE_DIRECTED_POINTS<class_CPUParticles_constant_EMISSION_SHAPE_DIRECTED_POINTS>`.
 Sets the :ref:`Color<class_Color>`\ s to modulate particles by when using :ref:`EMISSION_SHAPE_POINTS<class_CPUParticles_constant_EMISSION_SHAPE_POINTS>` or :ref:`EMISSION_SHAPE_DIRECTED_POINTS<class_CPUParticles_constant_EMISSION_SHAPE_DIRECTED_POINTS>`.
 
 
@@ -670,18 +680,72 @@ Sets the direction the particles will be emitted in when using :ref:`EMISSION_SH
 
 
 - :ref:`PoolVector3Array<class_PoolVector3Array>` **emission_points**
 - :ref:`PoolVector3Array<class_PoolVector3Array>` **emission_points**
 
 
-+-----------+----------------------------+
-| *Default* | ``PoolVector3Array(  )``   |
-+-----------+----------------------------+
-| *Setter*  | set_emission_points(value) |
-+-----------+----------------------------+
-| *Getter*  | get_emission_points()      |
-+-----------+----------------------------+
++----------+----------------------------+
+| *Setter* | set_emission_points(value) |
++----------+----------------------------+
+| *Getter* | get_emission_points()      |
++----------+----------------------------+
 
 
 Sets the initial positions to spawn particles when using :ref:`EMISSION_SHAPE_POINTS<class_CPUParticles_constant_EMISSION_SHAPE_POINTS>` or :ref:`EMISSION_SHAPE_DIRECTED_POINTS<class_CPUParticles_constant_EMISSION_SHAPE_DIRECTED_POINTS>`.
 Sets the initial positions to spawn particles when using :ref:`EMISSION_SHAPE_POINTS<class_CPUParticles_constant_EMISSION_SHAPE_POINTS>` or :ref:`EMISSION_SHAPE_DIRECTED_POINTS<class_CPUParticles_constant_EMISSION_SHAPE_DIRECTED_POINTS>`.
 
 
 ----
 ----
 
 
+.. _class_CPUParticles_property_emission_ring_axis:
+
+- :ref:`Vector3<class_Vector3>` **emission_ring_axis**
+
++----------+-------------------------------+
+| *Setter* | set_emission_ring_axis(value) |
++----------+-------------------------------+
+| *Getter* | get_emission_ring_axis()      |
++----------+-------------------------------+
+
+The axis for the ring shaped emitter when using :ref:`EMISSION_SHAPE_RING<class_CPUParticles_constant_EMISSION_SHAPE_RING>`.
+
+----
+
+.. _class_CPUParticles_property_emission_ring_height:
+
+- :ref:`float<class_float>` **emission_ring_height**
+
++----------+---------------------------------+
+| *Setter* | set_emission_ring_height(value) |
++----------+---------------------------------+
+| *Getter* | get_emission_ring_height()      |
++----------+---------------------------------+
+
+The height for the ring shaped emitter when using :ref:`EMISSION_SHAPE_RING<class_CPUParticles_constant_EMISSION_SHAPE_RING>`.
+
+----
+
+.. _class_CPUParticles_property_emission_ring_inner_radius:
+
+- :ref:`float<class_float>` **emission_ring_inner_radius**
+
++----------+---------------------------------------+
+| *Setter* | set_emission_ring_inner_radius(value) |
++----------+---------------------------------------+
+| *Getter* | get_emission_ring_inner_radius()      |
++----------+---------------------------------------+
+
+The inner radius for the ring shaped emitter when using :ref:`EMISSION_SHAPE_RING<class_CPUParticles_constant_EMISSION_SHAPE_RING>`.
+
+----
+
+.. _class_CPUParticles_property_emission_ring_radius:
+
+- :ref:`float<class_float>` **emission_ring_radius**
+
++----------+---------------------------------+
+| *Setter* | set_emission_ring_radius(value) |
++----------+---------------------------------+
+| *Getter* | get_emission_ring_radius()      |
++----------+---------------------------------+
+
+The radius for the ring shaped emitter when using :ref:`EMISSION_SHAPE_RING<class_CPUParticles_constant_EMISSION_SHAPE_RING>`.
+
+----
+
 .. _class_CPUParticles_property_emission_shape:
 .. _class_CPUParticles_property_emission_shape:
 
 
 - :ref:`EmissionShape<enum_CPUParticles_EmissionShape>` **emission_shape**
 - :ref:`EmissionShape<enum_CPUParticles_EmissionShape>` **emission_shape**

+ 1 - 1
classes/class_cpuparticles2d.rst

@@ -537,7 +537,7 @@ Each particle's initial color. If :ref:`texture<class_CPUParticles2D_property_te
 | *Getter* | get_color_ramp()      |
 | *Getter* | get_color_ramp()      |
 +----------+-----------------------+
 +----------+-----------------------+
 
 
-Each particle's color will vary along this :ref:`Gradient<class_Gradient>`.
+Each particle's color will vary along this :ref:`Gradient<class_Gradient>` (multiplied with :ref:`color<class_CPUParticles2D_property_color>`).
 
 
 ----
 ----
 
 

+ 81 - 1
classes/class_crypto.rst

@@ -18,7 +18,7 @@ Description
 
 
 The Crypto class allows you to access some more advanced cryptographic functionalities in Godot.
 The Crypto class allows you to access some more advanced cryptographic functionalities in Godot.
 
 
-For now, this includes generating cryptographically secure random bytes, and RSA keys and self-signed X509 certificates generation. More functionalities are planned for future releases.
+For now, this includes generating cryptographically secure random bytes, RSA keys and self-signed X509 certificates generation, asymmetric key encryption/decryption, and signing/verification.
 
 
 ::
 ::
 
 
@@ -36,12 +36,30 @@ For now, this includes generating cryptographically secure random bytes, and RSA
         # Save key and certificate in the user folder.
         # Save key and certificate in the user folder.
         key.save("user://generated.key")
         key.save("user://generated.key")
         cert.save("user://generated.crt")
         cert.save("user://generated.crt")
+        # Encryption
+        var data = "Some data"
+        var encrypted = crypto.encrypt(key, data.to_utf8())
+        # Decryption
+        var decrypted = crypto.decrypt(key, encrypted)
+        # Signing
+        var signature = crypto.sign(HashingContext.HASH_SHA256, data.sha256_buffer(), key)
+        # Verifying
+        var verified = crypto.verify(HashingContext.HASH_SHA256, data.sha256_buffer(), signature, key)
+        # Checks
+        assert(verified)
+        assert(data.to_utf8() == decrypted)
 
 
 **Note:** Not available in HTML5 exports.
 **Note:** Not available in HTML5 exports.
 
 
 Methods
 Methods
 -------
 -------
 
 
++-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                       | :ref:`constant_time_compare<class_Crypto_method_constant_time_compare>` **(** :ref:`PoolByteArray<class_PoolByteArray>` trusted, :ref:`PoolByteArray<class_PoolByteArray>` received **)**                                                                                                                                                     |
++-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PoolByteArray<class_PoolByteArray>`     | :ref:`decrypt<class_Crypto_method_decrypt>` **(** :ref:`CryptoKey<class_CryptoKey>` key, :ref:`PoolByteArray<class_PoolByteArray>` ciphertext **)**                                                                                                                                                                                           |
++-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PoolByteArray<class_PoolByteArray>`     | :ref:`encrypt<class_Crypto_method_encrypt>` **(** :ref:`CryptoKey<class_CryptoKey>` key, :ref:`PoolByteArray<class_PoolByteArray>` plaintext **)**                                                                                                                                                                                            |
 +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`PoolByteArray<class_PoolByteArray>`     | :ref:`generate_random_bytes<class_Crypto_method_generate_random_bytes>` **(** :ref:`int<class_int>` size **)**                                                                                                                                                                                                                                |
 | :ref:`PoolByteArray<class_PoolByteArray>`     | :ref:`generate_random_bytes<class_Crypto_method_generate_random_bytes>` **(** :ref:`int<class_int>` size **)**                                                                                                                                                                                                                                |
 +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -49,10 +67,46 @@ Methods
 +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`X509Certificate<class_X509Certificate>` | :ref:`generate_self_signed_certificate<class_Crypto_method_generate_self_signed_certificate>` **(** :ref:`CryptoKey<class_CryptoKey>` key, :ref:`String<class_String>` issuer_name="CN=myserver,O=myorganisation,C=IT", :ref:`String<class_String>` not_before="20140101000000", :ref:`String<class_String>` not_after="20340101000000" **)** |
 | :ref:`X509Certificate<class_X509Certificate>` | :ref:`generate_self_signed_certificate<class_Crypto_method_generate_self_signed_certificate>` **(** :ref:`CryptoKey<class_CryptoKey>` key, :ref:`String<class_String>` issuer_name="CN=myserver,O=myorganisation,C=IT", :ref:`String<class_String>` not_before="20140101000000", :ref:`String<class_String>` not_after="20340101000000" **)** |
 +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PoolByteArray<class_PoolByteArray>`     | :ref:`hmac_digest<class_Crypto_method_hmac_digest>` **(** :ref:`HashType<enum_HashingContext_HashType>` hash_type, :ref:`PoolByteArray<class_PoolByteArray>` key, :ref:`PoolByteArray<class_PoolByteArray>` msg **)**                                                                                                                         |
++-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PoolByteArray<class_PoolByteArray>`     | :ref:`sign<class_Crypto_method_sign>` **(** :ref:`HashType<enum_HashingContext_HashType>` hash_type, :ref:`PoolByteArray<class_PoolByteArray>` hash, :ref:`CryptoKey<class_CryptoKey>` key **)**                                                                                                                                              |
++-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                       | :ref:`verify<class_Crypto_method_verify>` **(** :ref:`HashType<enum_HashingContext_HashType>` hash_type, :ref:`PoolByteArray<class_PoolByteArray>` hash, :ref:`PoolByteArray<class_PoolByteArray>` signature, :ref:`CryptoKey<class_CryptoKey>` key **)**                                                                                     |
++-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
 
 
+.. _class_Crypto_method_constant_time_compare:
+
+- :ref:`bool<class_bool>` **constant_time_compare** **(** :ref:`PoolByteArray<class_PoolByteArray>` trusted, :ref:`PoolByteArray<class_PoolByteArray>` received **)**
+
+Compares two :ref:`PoolByteArray<class_PoolByteArray>`\ s for equality without leaking timing information in order to prevent timing attacks.
+
+See `this blog post <https://paragonie.com/blog/2015/11/preventing-timing-attacks-on-string-comparison-with-double-hmac-strategy>`_ for more information.
+
+----
+
+.. _class_Crypto_method_decrypt:
+
+- :ref:`PoolByteArray<class_PoolByteArray>` **decrypt** **(** :ref:`CryptoKey<class_CryptoKey>` key, :ref:`PoolByteArray<class_PoolByteArray>` ciphertext **)**
+
+Decrypt the given ``ciphertext`` with the provided private ``key``.
+
+**Note**: The maximum size of accepted ciphertext is limited by the key size.
+
+----
+
+.. _class_Crypto_method_encrypt:
+
+- :ref:`PoolByteArray<class_PoolByteArray>` **encrypt** **(** :ref:`CryptoKey<class_CryptoKey>` key, :ref:`PoolByteArray<class_PoolByteArray>` plaintext **)**
+
+Encrypt the given ``plaintext`` with the provided public ``key``.
+
+**Note**: The maximum size of accepted plaintext is limited by the key size.
+
+----
+
 .. _class_Crypto_method_generate_random_bytes:
 .. _class_Crypto_method_generate_random_bytes:
 
 
 - :ref:`PoolByteArray<class_PoolByteArray>` **generate_random_bytes** **(** :ref:`int<class_int>` size **)**
 - :ref:`PoolByteArray<class_PoolByteArray>` **generate_random_bytes** **(** :ref:`int<class_int>` size **)**
@@ -85,6 +139,32 @@ A small example to generate an RSA key and a X509 self-signed certificate.
     # Generate self-signed certificate using the given key.
     # Generate self-signed certificate using the given key.
     var cert = crypto.generate_self_signed_certificate(key, "CN=example.com,O=A Game Company,C=IT")
     var cert = crypto.generate_self_signed_certificate(key, "CN=example.com,O=A Game Company,C=IT")
 
 
+----
+
+.. _class_Crypto_method_hmac_digest:
+
+- :ref:`PoolByteArray<class_PoolByteArray>` **hmac_digest** **(** :ref:`HashType<enum_HashingContext_HashType>` hash_type, :ref:`PoolByteArray<class_PoolByteArray>` key, :ref:`PoolByteArray<class_PoolByteArray>` msg **)**
+
+Generates an `HMAC <https://en.wikipedia.org/wiki/HMAC>`_ digest of ``msg`` using ``key``. The ``hash_type`` parameter is the hashing algorithm that is used for the inner and outer hashes.
+
+Currently, only :ref:`HashingContext.HASH_SHA256<class_HashingContext_constant_HASH_SHA256>` and :ref:`HashingContext.HASH_SHA1<class_HashingContext_constant_HASH_SHA1>` are supported.
+
+----
+
+.. _class_Crypto_method_sign:
+
+- :ref:`PoolByteArray<class_PoolByteArray>` **sign** **(** :ref:`HashType<enum_HashingContext_HashType>` hash_type, :ref:`PoolByteArray<class_PoolByteArray>` hash, :ref:`CryptoKey<class_CryptoKey>` key **)**
+
+Sign a given ``hash`` of type ``hash_type`` with the provided private ``key``.
+
+----
+
+.. _class_Crypto_method_verify:
+
+- :ref:`bool<class_bool>` **verify** **(** :ref:`HashType<enum_HashingContext_HashType>` hash_type, :ref:`PoolByteArray<class_PoolByteArray>` hash, :ref:`PoolByteArray<class_PoolByteArray>` signature, :ref:`CryptoKey<class_CryptoKey>` key **)**
+
+Verify that a given ``signature`` for ``hash`` of type ``hash_type`` against the provided public ``key``.
+
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |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.)`
 .. |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.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`

+ 43 - 9
classes/class_cryptokey.rst

@@ -25,28 +25,62 @@ They can be used to generate a self-signed :ref:`X509Certificate<class_X509Certi
 Methods
 Methods
 -------
 -------
 
 
-+---------------------------------------+---------------------------------------------------------------------------------------+
-| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`load<class_CryptoKey_method_load>` **(** :ref:`String<class_String>` path **)** |
-+---------------------------------------+---------------------------------------------------------------------------------------+
-| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`save<class_CryptoKey_method_save>` **(** :ref:`String<class_String>` path **)** |
-+---------------------------------------+---------------------------------------------------------------------------------------+
++---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`               | :ref:`is_public_only<class_CryptoKey_method_is_public_only>` **(** **)** |const|                                                                               |
++---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`load<class_CryptoKey_method_load>` **(** :ref:`String<class_String>` path, :ref:`bool<class_bool>` public_only=false **)**                               |
++---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`load_from_string<class_CryptoKey_method_load_from_string>` **(** :ref:`String<class_String>` string_key, :ref:`bool<class_bool>` public_only=false **)** |
++---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`save<class_CryptoKey_method_save>` **(** :ref:`String<class_String>` path, :ref:`bool<class_bool>` public_only=false **)**                               |
++---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`           | :ref:`save_to_string<class_CryptoKey_method_save_to_string>` **(** :ref:`bool<class_bool>` public_only=false **)**                                             |
++---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
 
 
+.. _class_CryptoKey_method_is_public_only:
+
+- :ref:`bool<class_bool>` **is_public_only** **(** **)** |const|
+
+Return ``true`` if this CryptoKey only has the public part, and not the private one.
+
+----
+
 .. _class_CryptoKey_method_load:
 .. _class_CryptoKey_method_load:
 
 
-- :ref:`Error<enum_@GlobalScope_Error>` **load** **(** :ref:`String<class_String>` path **)**
+- :ref:`Error<enum_@GlobalScope_Error>` **load** **(** :ref:`String<class_String>` path, :ref:`bool<class_bool>` public_only=false **)**
 
 
-Loads a key from ``path`` ("\*.key" file).
+Loads a key from ``path``. If ``public_only`` is ``true``, only the public key will be loaded.
+
+**Note**: ``path`` should should be a "\*.pub" file if ``public_only`` is ``true``, a "\*.key" file otherwise.
+
+----
+
+.. _class_CryptoKey_method_load_from_string:
+
+- :ref:`Error<enum_@GlobalScope_Error>` **load_from_string** **(** :ref:`String<class_String>` string_key, :ref:`bool<class_bool>` public_only=false **)**
+
+Loads a key from the given ``string``. If ``public_only`` is ``true``, only the public key will be loaded.
 
 
 ----
 ----
 
 
 .. _class_CryptoKey_method_save:
 .. _class_CryptoKey_method_save:
 
 
-- :ref:`Error<enum_@GlobalScope_Error>` **save** **(** :ref:`String<class_String>` path **)**
+- :ref:`Error<enum_@GlobalScope_Error>` **save** **(** :ref:`String<class_String>` path, :ref:`bool<class_bool>` public_only=false **)**
+
+Saves a key to the given ``path``. If ``public_only`` is ``true``, only the public key will be saved.
+
+**Note**: ``path`` should should be a "\*.pub" file if ``public_only`` is ``true``, a "\*.key" file otherwise.
+
+----
+
+.. _class_CryptoKey_method_save_to_string:
+
+- :ref:`String<class_String>` **save_to_string** **(** :ref:`bool<class_bool>` public_only=false **)**
 
 
-Saves a key to the given ``path`` (should be a "\*.key" file).
+Returns a string containing the key in PEM format. If ``public_only`` is ``true``, only the public key will be included.
 
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |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.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 1 - 1
classes/class_csgbox.rst

@@ -9,7 +9,7 @@
 CSGBox
 CSGBox
 ======
 ======
 
 
-**Inherits:** :ref:`CSGPrimitive<class_CSGPrimitive>` **<** :ref:`CSGShape<class_CSGShape>` **<** :ref:`GeometryInstance<class_GeometryInstance>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`CSGPrimitive<class_CSGPrimitive>` **<** :ref:`CSGShape<class_CSGShape>` **<** :ref:`GeometryInstance<class_GeometryInstance>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`CullInstance<class_CullInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
 
 A CSG Box shape.
 A CSG Box shape.
 
 

+ 1 - 1
classes/class_csgcombiner.rst

@@ -9,7 +9,7 @@
 CSGCombiner
 CSGCombiner
 ===========
 ===========
 
 
-**Inherits:** :ref:`CSGShape<class_CSGShape>` **<** :ref:`GeometryInstance<class_GeometryInstance>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`CSGShape<class_CSGShape>` **<** :ref:`GeometryInstance<class_GeometryInstance>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`CullInstance<class_CullInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
 
 A CSG node that allows you to combine other CSG modifiers.
 A CSG node that allows you to combine other CSG modifiers.
 
 

+ 1 - 1
classes/class_csgcylinder.rst

@@ -9,7 +9,7 @@
 CSGCylinder
 CSGCylinder
 ===========
 ===========
 
 
-**Inherits:** :ref:`CSGPrimitive<class_CSGPrimitive>` **<** :ref:`CSGShape<class_CSGShape>` **<** :ref:`GeometryInstance<class_GeometryInstance>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`CSGPrimitive<class_CSGPrimitive>` **<** :ref:`CSGShape<class_CSGShape>` **<** :ref:`GeometryInstance<class_GeometryInstance>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`CullInstance<class_CullInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
 
 A CSG Cylinder shape.
 A CSG Cylinder shape.
 
 

+ 3 - 1
classes/class_csgmesh.rst

@@ -9,7 +9,7 @@
 CSGMesh
 CSGMesh
 =======
 =======
 
 
-**Inherits:** :ref:`CSGPrimitive<class_CSGPrimitive>` **<** :ref:`CSGShape<class_CSGShape>` **<** :ref:`GeometryInstance<class_GeometryInstance>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`CSGPrimitive<class_CSGPrimitive>` **<** :ref:`CSGShape<class_CSGShape>` **<** :ref:`GeometryInstance<class_GeometryInstance>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`CullInstance<class_CullInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
 
 A CSG Mesh shape that uses a mesh resource.
 A CSG Mesh shape that uses a mesh resource.
 
 
@@ -56,6 +56,8 @@ The :ref:`Material<class_Material>` used in drawing the CSG shape.
 
 
 The :ref:`Mesh<class_Mesh>` resource to use as a CSG shape.
 The :ref:`Mesh<class_Mesh>` resource to use as a CSG shape.
 
 
+**Note:** When using an :ref:`ArrayMesh<class_ArrayMesh>`, avoid meshes with vertex normals unless a flat shader is required. By default, CSGMesh will ignore the mesh's vertex normals and use a smooth shader calculated using the faces' normals. If a flat shader is required, ensure that all faces' vertex normals are parallel.
+
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |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.)`
 .. |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.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`

+ 1 - 1
classes/class_csgpolygon.rst

@@ -9,7 +9,7 @@
 CSGPolygon
 CSGPolygon
 ==========
 ==========
 
 
-**Inherits:** :ref:`CSGPrimitive<class_CSGPrimitive>` **<** :ref:`CSGShape<class_CSGShape>` **<** :ref:`GeometryInstance<class_GeometryInstance>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`CSGPrimitive<class_CSGPrimitive>` **<** :ref:`CSGShape<class_CSGShape>` **<** :ref:`GeometryInstance<class_GeometryInstance>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`CullInstance<class_CullInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
 
 Extrudes a 2D polygon shape to create a 3D mesh.
 Extrudes a 2D polygon shape to create a 3D mesh.
 
 

+ 1 - 1
classes/class_csgprimitive.rst

@@ -9,7 +9,7 @@
 CSGPrimitive
 CSGPrimitive
 ============
 ============
 
 
-**Inherits:** :ref:`CSGShape<class_CSGShape>` **<** :ref:`GeometryInstance<class_GeometryInstance>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`CSGShape<class_CSGShape>` **<** :ref:`GeometryInstance<class_GeometryInstance>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`CullInstance<class_CullInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
 
 **Inherited By:** :ref:`CSGBox<class_CSGBox>`, :ref:`CSGCylinder<class_CSGCylinder>`, :ref:`CSGMesh<class_CSGMesh>`, :ref:`CSGPolygon<class_CSGPolygon>`, :ref:`CSGSphere<class_CSGSphere>`, :ref:`CSGTorus<class_CSGTorus>`
 **Inherited By:** :ref:`CSGBox<class_CSGBox>`, :ref:`CSGCylinder<class_CSGCylinder>`, :ref:`CSGMesh<class_CSGMesh>`, :ref:`CSGPolygon<class_CSGPolygon>`, :ref:`CSGSphere<class_CSGSphere>`, :ref:`CSGTorus<class_CSGTorus>`
 
 

+ 1 - 1
classes/class_csgshape.rst

@@ -9,7 +9,7 @@
 CSGShape
 CSGShape
 ========
 ========
 
 
-**Inherits:** :ref:`GeometryInstance<class_GeometryInstance>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`GeometryInstance<class_GeometryInstance>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`CullInstance<class_CullInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
 
 **Inherited By:** :ref:`CSGCombiner<class_CSGCombiner>`, :ref:`CSGPrimitive<class_CSGPrimitive>`
 **Inherited By:** :ref:`CSGCombiner<class_CSGCombiner>`, :ref:`CSGPrimitive<class_CSGPrimitive>`
 
 

+ 1 - 1
classes/class_csgsphere.rst

@@ -9,7 +9,7 @@
 CSGSphere
 CSGSphere
 =========
 =========
 
 
-**Inherits:** :ref:`CSGPrimitive<class_CSGPrimitive>` **<** :ref:`CSGShape<class_CSGShape>` **<** :ref:`GeometryInstance<class_GeometryInstance>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`CSGPrimitive<class_CSGPrimitive>` **<** :ref:`CSGShape<class_CSGShape>` **<** :ref:`GeometryInstance<class_GeometryInstance>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`CullInstance<class_CullInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
 
 A CSG Sphere shape.
 A CSG Sphere shape.
 
 

+ 1 - 1
classes/class_csgtorus.rst

@@ -9,7 +9,7 @@
 CSGTorus
 CSGTorus
 ========
 ========
 
 
-**Inherits:** :ref:`CSGPrimitive<class_CSGPrimitive>` **<** :ref:`CSGShape<class_CSGShape>` **<** :ref:`GeometryInstance<class_GeometryInstance>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`CSGPrimitive<class_CSGPrimitive>` **<** :ref:`CSGShape<class_CSGShape>` **<** :ref:`GeometryInstance<class_GeometryInstance>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`CullInstance<class_CullInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
 
 A CSG Torus shape.
 A CSG Torus shape.
 
 

+ 4 - 4
classes/class_csharpscript.rst

@@ -28,16 +28,16 @@ Tutorials
 Methods
 Methods
 -------
 -------
 
 
-+-----------------------------+--------------------------------------------------------------------+
-| :ref:`Object<class_Object>` | :ref:`new<class_CSharpScript_method_new>` **(** ... **)** |vararg| |
-+-----------------------------+--------------------------------------------------------------------+
++-------------------------------+--------------------------------------------------------------------+
+| :ref:`Variant<class_Variant>` | :ref:`new<class_CSharpScript_method_new>` **(** ... **)** |vararg| |
++-------------------------------+--------------------------------------------------------------------+
 
 
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
 
 
 .. _class_CSharpScript_method_new:
 .. _class_CSharpScript_method_new:
 
 
-- :ref:`Object<class_Object>` **new** **(** ... **)** |vararg|
+- :ref:`Variant<class_Variant>` **new** **(** ... **)** |vararg|
 
 
 Returns a new instance of the script.
 Returns a new instance of the script.
 
 

+ 108 - 0
classes/class_cullinstance.rst

@@ -0,0 +1,108 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the CullInstance.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_CullInstance:
+
+CullInstance
+============
+
+**Inherits:** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+
+**Inherited By:** :ref:`VisibilityNotifier<class_VisibilityNotifier>`, :ref:`VisualInstance<class_VisualInstance>`
+
+Parent of all nodes that can be culled by the Portal system.
+
+Description
+-----------
+
+Provides common functionality to nodes that can be culled by the :ref:`Portal<class_Portal>` system.
+
+``Static`` and ``Dynamic`` objects are the most efficiently managed objects in the system, but there are some caveats. They are expected to be present initially when :ref:`Room<class_Room>`\ s are converted using the :ref:`RoomManager<class_RoomManager>` ``rooms_convert`` function, and their lifetime should be the same as the game level (i.e. present until you call ``rooms_clear`` on the :ref:`RoomManager<class_RoomManager>`. Although you shouldn't create / delete these objects during gameplay, you can manage their visibility with the standard ``hide`` and ``show`` commands.
+
+``Roaming`` objects on the other hand, require extra processing to keep track of which :ref:`Room<class_Room>` they are within. This enables them to be culled effectively, wherever they are.
+
+``Global`` objects are not culled by the portal system, and use view frustum culling only.
+
+Objects that are not ``Static`` or ``Dynamic`` can be freely created and deleted during the lifetime of the game level.
+
+Properties
+----------
+
++-------------------------------------------------+-----------------------------------------------------------------------+----------+
+| :ref:`bool<class_bool>`                         | :ref:`include_in_bound<class_CullInstance_property_include_in_bound>` | ``true`` |
++-------------------------------------------------+-----------------------------------------------------------------------+----------+
+| :ref:`PortalMode<enum_CullInstance_PortalMode>` | :ref:`portal_mode<class_CullInstance_property_portal_mode>`           | ``0``    |
++-------------------------------------------------+-----------------------------------------------------------------------+----------+
+
+Enumerations
+------------
+
+.. _enum_CullInstance_PortalMode:
+
+.. _class_CullInstance_constant_PORTAL_MODE_STATIC:
+
+.. _class_CullInstance_constant_PORTAL_MODE_DYNAMIC:
+
+.. _class_CullInstance_constant_PORTAL_MODE_ROAMING:
+
+.. _class_CullInstance_constant_PORTAL_MODE_GLOBAL:
+
+.. _class_CullInstance_constant_PORTAL_MODE_IGNORE:
+
+enum **PortalMode**:
+
+- **PORTAL_MODE_STATIC** = **0** --- Use for instances within :ref:`Room<class_Room>`\ s that will **not move** - e.g. walls, floors.
+
+**Note:** If you attempt to delete a ``PORTAL_MODE_STATIC`` instance while the room graph is loaded (converted), it will unload the room graph and deactivate portal culling. This is because the **room graph** data has been invalidated. You will need to reconvert the rooms using the :ref:`RoomManager<class_RoomManager>` to activate the system again.
+
+- **PORTAL_MODE_DYNAMIC** = **1** --- Use for instances within rooms that will move but **not change room** - e.g. moving platforms.
+
+**Note:** If you attempt to delete a ``PORTAL_MODE_DYNAMIC`` instance while the room graph is loaded (converted), it will unload the room graph and deactivate portal culling. This is because the **room graph** data has been invalidated. You will need to reconvert the rooms using the :ref:`RoomManager<class_RoomManager>` to activate the system again.
+
+- **PORTAL_MODE_ROAMING** = **2** --- Use for instances that will move **between** :ref:`Room<class_Room>`\ s - e.g. players.
+
+- **PORTAL_MODE_GLOBAL** = **3** --- Use for instances that will be frustum culled only - e.g. first person weapon, debug.
+
+- **PORTAL_MODE_IGNORE** = **4** --- Use for instances that will not be shown at all - e.g. **manual room bounds** (specified by prefix *'Bound\_'*).
+
+Property Descriptions
+---------------------
+
+.. _class_CullInstance_property_include_in_bound:
+
+- :ref:`bool<class_bool>` **include_in_bound**
+
++-----------+-----------------------------+
+| *Default* | ``true``                    |
++-----------+-----------------------------+
+| *Setter*  | set_include_in_bound(value) |
++-----------+-----------------------------+
+| *Getter*  | get_include_in_bound()      |
++-----------+-----------------------------+
+
+When a manual bound has not been explicitly specified for a :ref:`Room<class_Room>`, the convex hull bound will be estimated from the geometry of the objects within the room. This setting determines whether the geometry of an object is included in this estimate of the room bound.
+
+**Note:** This setting is only relevant when the object is set to ``PORTAL_MODE_STATIC`` or ``PORTAL_MODE_DYNAMIC``, and for :ref:`Portal<class_Portal>`\ s.
+
+----
+
+.. _class_CullInstance_property_portal_mode:
+
+- :ref:`PortalMode<enum_CullInstance_PortalMode>` **portal_mode**
+
++-----------+------------------------+
+| *Default* | ``0``                  |
++-----------+------------------------+
+| *Setter*  | set_portal_mode(value) |
++-----------+------------------------+
+| *Getter*  | get_portal_mode()      |
++-----------+------------------------+
+
+When using :ref:`Room<class_Room>`\ s and :ref:`Portal<class_Portal>`\ s, this specifies how the ``CullInstance`` is processed in the system.
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`

+ 5 - 5
classes/class_cylindermesh.rst

@@ -16,7 +16,7 @@ Class representing a cylindrical :ref:`PrimitiveMesh<class_PrimitiveMesh>`.
 Description
 Description
 -----------
 -----------
 
 
-Class representing a cylindrical :ref:`PrimitiveMesh<class_PrimitiveMesh>`. This class can be used to create cones by setting either the :ref:`top_radius<class_CylinderMesh_property_top_radius>` or :ref:`bottom_radius<class_CylinderMesh_property_bottom_radius>` properties to 0.0.
+Class representing a cylindrical :ref:`PrimitiveMesh<class_PrimitiveMesh>`. This class can be used to create cones by setting either the :ref:`top_radius<class_CylinderMesh_property_top_radius>` or :ref:`bottom_radius<class_CylinderMesh_property_bottom_radius>` properties to ``0.0``.
 
 
 Properties
 Properties
 ----------
 ----------
@@ -48,7 +48,7 @@ Property Descriptions
 | *Getter*  | get_bottom_radius()      |
 | *Getter*  | get_bottom_radius()      |
 +-----------+--------------------------+
 +-----------+--------------------------+
 
 
-Bottom radius of the cylinder.
+Bottom radius of the cylinder. If set to ``0.0``, the bottom faces will not be generated, resulting in a conic shape.
 
 
 ----
 ----
 
 
@@ -80,7 +80,7 @@ Full height of the cylinder.
 | *Getter*  | get_radial_segments()      |
 | *Getter*  | get_radial_segments()      |
 +-----------+----------------------------+
 +-----------+----------------------------+
 
 
-Number of radial segments on the cylinder.
+Number of radial segments on the cylinder. Higher values result in a more detailed cylinder/cone at the cost of performance.
 
 
 ----
 ----
 
 
@@ -96,7 +96,7 @@ Number of radial segments on the cylinder.
 | *Getter*  | get_rings()      |
 | *Getter*  | get_rings()      |
 +-----------+------------------+
 +-----------+------------------+
 
 
-Number of edge rings along the height of the cylinder.
+Number of edge rings along the height of the cylinder. Changing :ref:`rings<class_CylinderMesh_property_rings>` does not have any visual impact unless a shader or procedural mesh tool is used to alter the vertex data. Higher values result in more subdivisions, which can be used to create smoother-looking effects with shaders or procedural mesh tools (at the cost of performance). When not altering the vertex data using a shader or procedural mesh tool, :ref:`rings<class_CylinderMesh_property_rings>` should be kept to its default value.
 
 
 ----
 ----
 
 
@@ -112,7 +112,7 @@ Number of edge rings along the height of the cylinder.
 | *Getter*  | get_top_radius()      |
 | *Getter*  | get_top_radius()      |
 +-----------+-----------------------+
 +-----------+-----------------------+
 
 
-Top radius of the cylinder.
+Top radius of the cylinder. If set to ``0.0``, the top faces will not be generated, resulting in a conic shape.
 
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |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.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 1 - 1
classes/class_directionallight.rst

@@ -9,7 +9,7 @@
 DirectionalLight
 DirectionalLight
 ================
 ================
 
 
-**Inherits:** :ref:`Light<class_Light>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`Light<class_Light>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`CullInstance<class_CullInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
 
 Directional light from a distance, as from the Sun.
 Directional light from a distance, as from the Sun.
 
 

+ 1 - 1
classes/class_directory.rst

@@ -187,7 +187,7 @@ On UNIX desktop systems, returns the available space on the current directory's
 
 
 - :ref:`Error<enum_@GlobalScope_Error>` **list_dir_begin** **(** :ref:`bool<class_bool>` skip_navigational=false, :ref:`bool<class_bool>` skip_hidden=false **)**
 - :ref:`Error<enum_@GlobalScope_Error>` **list_dir_begin** **(** :ref:`bool<class_bool>` skip_navigational=false, :ref:`bool<class_bool>` skip_hidden=false **)**
 
 
-Initializes the stream used to list all files and directories using the :ref:`get_next<class_Directory_method_get_next>` function, closing the current opened stream if needed. Once the stream has been processed, it should typically be closed with :ref:`list_dir_end<class_Directory_method_list_dir_end>`.
+Initializes the stream used to list all files and directories using the :ref:`get_next<class_Directory_method_get_next>` function, closing the currently opened stream if needed. Once the stream has been processed, it should typically be closed with :ref:`list_dir_end<class_Directory_method_list_dir_end>`.
 
 
 If ``skip_navigational`` is ``true``, ``.`` and ``..`` are filtered out.
 If ``skip_navigational`` is ``true``, ``.`` and ``..`` are filtered out.
 
 

+ 1 - 1
classes/class_editorimportplugin.rst

@@ -111,7 +111,7 @@ Gets the options and default values for the preset at this index. Returns an Arr
 
 
 - :ref:`int<class_int>` **get_import_order** **(** **)** |virtual|
 - :ref:`int<class_int>` **get_import_order** **(** **)** |virtual|
 
 
-Gets the order of this importer to be run when importing resources. Higher values will be called later. Use this to ensure the importer runs after the dependencies are already imported.
+Gets the order of this importer to be run when importing resources. Importers with *lower* import orders will be called first, and higher values will be called later. Use this to ensure the importer runs after the dependencies are already imported. The default import order is ``0`` unless overridden by a specific importer. See :ref:`ImportOrder<enum_ResourceImporter_ImportOrder>` for some predefined values.
 
 
 ----
 ----
 
 

+ 192 - 0
classes/class_editorresourcepicker.rst

@@ -0,0 +1,192 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the EditorResourcePicker.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_EditorResourcePicker:
+
+EditorResourcePicker
+====================
+
+**Inherits:** :ref:`HBoxContainer<class_HBoxContainer>` **<** :ref:`BoxContainer<class_BoxContainer>` **<** :ref:`Container<class_Container>` **<** :ref:`Control<class_Control>` **<** :ref:`CanvasItem<class_CanvasItem>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+
+**Inherited By:** :ref:`EditorScriptPicker<class_EditorScriptPicker>`
+
+Godot editor's control for selecting :ref:`Resource<class_Resource>` type properties.
+
+Description
+-----------
+
+This :ref:`Control<class_Control>` node is used in the editor's Inspector dock to allow editing of :ref:`Resource<class_Resource>` type properties. It provides options for creating, loading, saving and converting resources. Can be used with :ref:`EditorInspectorPlugin<class_EditorInspectorPlugin>` to recreate the same behavior.
+
+**Note:** This :ref:`Control<class_Control>` does not include any editor for the resource, as editing is controlled by the Inspector dock itself or sub-Inspectors.
+
+Properties
+----------
+
++---------------------------------+-----------------------------------------------------------------------------+-----------+
+| :ref:`String<class_String>`     | :ref:`base_type<class_EditorResourcePicker_property_base_type>`             | ``""``    |
++---------------------------------+-----------------------------------------------------------------------------+-----------+
+| :ref:`bool<class_bool>`         | :ref:`editable<class_EditorResourcePicker_property_editable>`               | ``true``  |
++---------------------------------+-----------------------------------------------------------------------------+-----------+
+| :ref:`Resource<class_Resource>` | :ref:`edited_resource<class_EditorResourcePicker_property_edited_resource>` |           |
++---------------------------------+-----------------------------------------------------------------------------+-----------+
+| :ref:`bool<class_bool>`         | :ref:`toggle_mode<class_EditorResourcePicker_property_toggle_mode>`         | ``false`` |
++---------------------------------+-----------------------------------------------------------------------------+-----------+
+
+Methods
+-------
+
++-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                       | :ref:`can_drop_data_fw<class_EditorResourcePicker_method_can_drop_data_fw>` **(** :ref:`Vector2<class_Vector2>` position, :ref:`Variant<class_Variant>` data, :ref:`Control<class_Control>` from **)** |const| |
++-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`drop_data_fw<class_EditorResourcePicker_method_drop_data_fw>` **(** :ref:`Vector2<class_Vector2>` position, :ref:`Variant<class_Variant>` data, :ref:`Control<class_Control>` from **)**                 |
++-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PoolStringArray<class_PoolStringArray>` | :ref:`get_allowed_types<class_EditorResourcePicker_method_get_allowed_types>` **(** **)** |const|                                                                                                              |
++-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Variant<class_Variant>`                 | :ref:`get_drag_data_fw<class_EditorResourcePicker_method_get_drag_data_fw>` **(** :ref:`Vector2<class_Vector2>` position, :ref:`Control<class_Control>` from **)**                                             |
++-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`handle_menu_selected<class_EditorResourcePicker_method_handle_menu_selected>` **(** :ref:`int<class_int>` id **)** |virtual|                                                                             |
++-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`set_create_options<class_EditorResourcePicker_method_set_create_options>` **(** :ref:`Object<class_Object>` menu_node **)** |virtual|                                                                    |
++-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`set_toggle_pressed<class_EditorResourcePicker_method_set_toggle_pressed>` **(** :ref:`bool<class_bool>` pressed **)**                                                                                    |
++-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+Signals
+-------
+
+.. _class_EditorResourcePicker_signal_resource_changed:
+
+- **resource_changed** **(** :ref:`Resource<class_Resource>` resource **)**
+
+Emitted when the value of the edited resource was changed.
+
+----
+
+.. _class_EditorResourcePicker_signal_resource_selected:
+
+- **resource_selected** **(** :ref:`Resource<class_Resource>` resource **)**
+
+Emitted when the resource value was set and user clicked to edit it.
+
+Property Descriptions
+---------------------
+
+.. _class_EditorResourcePicker_property_base_type:
+
+- :ref:`String<class_String>` **base_type**
+
++-----------+----------------------+
+| *Default* | ``""``               |
++-----------+----------------------+
+| *Setter*  | set_base_type(value) |
++-----------+----------------------+
+| *Getter*  | get_base_type()      |
++-----------+----------------------+
+
+The base type of allowed resource types. Can be a comma-separated list of several options.
+
+----
+
+.. _class_EditorResourcePicker_property_editable:
+
+- :ref:`bool<class_bool>` **editable**
+
++-----------+---------------------+
+| *Default* | ``true``            |
++-----------+---------------------+
+| *Setter*  | set_editable(value) |
++-----------+---------------------+
+| *Getter*  | is_editable()       |
++-----------+---------------------+
+
+If ``true``, the value can be selected and edited.
+
+----
+
+.. _class_EditorResourcePicker_property_edited_resource:
+
+- :ref:`Resource<class_Resource>` **edited_resource**
+
++----------+----------------------------+
+| *Setter* | set_edited_resource(value) |
++----------+----------------------------+
+| *Getter* | get_edited_resource()      |
++----------+----------------------------+
+
+The edited resource value.
+
+----
+
+.. _class_EditorResourcePicker_property_toggle_mode:
+
+- :ref:`bool<class_bool>` **toggle_mode**
+
++-----------+------------------------+
+| *Default* | ``false``              |
++-----------+------------------------+
+| *Setter*  | set_toggle_mode(value) |
++-----------+------------------------+
+| *Getter*  | is_toggle_mode()       |
++-----------+------------------------+
+
+If ``true``, the main button with the resource preview works in the toggle mode. Use :ref:`set_toggle_pressed<class_EditorResourcePicker_method_set_toggle_pressed>` to manually set the state.
+
+Method Descriptions
+-------------------
+
+.. _class_EditorResourcePicker_method_can_drop_data_fw:
+
+- :ref:`bool<class_bool>` **can_drop_data_fw** **(** :ref:`Vector2<class_Vector2>` position, :ref:`Variant<class_Variant>` data, :ref:`Control<class_Control>` from **)** |const|
+
+----
+
+.. _class_EditorResourcePicker_method_drop_data_fw:
+
+- void **drop_data_fw** **(** :ref:`Vector2<class_Vector2>` position, :ref:`Variant<class_Variant>` data, :ref:`Control<class_Control>` from **)**
+
+----
+
+.. _class_EditorResourcePicker_method_get_allowed_types:
+
+- :ref:`PoolStringArray<class_PoolStringArray>` **get_allowed_types** **(** **)** |const|
+
+Returns a list of all allowed types and subtypes corresponding to the :ref:`base_type<class_EditorResourcePicker_property_base_type>`. If the :ref:`base_type<class_EditorResourcePicker_property_base_type>` is empty, an empty list is returned.
+
+----
+
+.. _class_EditorResourcePicker_method_get_drag_data_fw:
+
+- :ref:`Variant<class_Variant>` **get_drag_data_fw** **(** :ref:`Vector2<class_Vector2>` position, :ref:`Control<class_Control>` from **)**
+
+----
+
+.. _class_EditorResourcePicker_method_handle_menu_selected:
+
+- void **handle_menu_selected** **(** :ref:`int<class_int>` id **)** |virtual|
+
+This virtual method can be implemented to handle context menu items not handled by default. See :ref:`set_create_options<class_EditorResourcePicker_method_set_create_options>`.
+
+----
+
+.. _class_EditorResourcePicker_method_set_create_options:
+
+- void **set_create_options** **(** :ref:`Object<class_Object>` menu_node **)** |virtual|
+
+This virtual method is called when updating the context menu of ``EditorResourcePicker``. Implement this method to override the "New ..." items with your own options. ``menu_node`` is a reference to the :ref:`PopupMenu<class_PopupMenu>` node.
+
+**Note:** Implement :ref:`handle_menu_selected<class_EditorResourcePicker_method_handle_menu_selected>` to handle these custom items.
+
+----
+
+.. _class_EditorResourcePicker_method_set_toggle_pressed:
+
+- void **set_toggle_pressed** **(** :ref:`bool<class_bool>` pressed **)**
+
+Sets the toggle mode state for the main button. Works only if :ref:`toggle_mode<class_EditorResourcePicker_property_toggle_mode>` is set to ``true``.
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`

+ 1 - 1
classes/class_editorsceneimporter.rst

@@ -11,7 +11,7 @@ EditorSceneImporter
 
 
 **Inherits:** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
 **Inherits:** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
 
 
-**Inherited By:** :ref:`EditorSceneImporterFBX<class_EditorSceneImporterFBX>`
+**Inherited By:** :ref:`EditorSceneImporterFBX<class_EditorSceneImporterFBX>`, :ref:`EditorSceneImporterGLTF<class_EditorSceneImporterGLTF>`
 
 
 Imports scenes from third-parties' 3D files.
 Imports scenes from third-parties' 3D files.
 
 

+ 18 - 0
classes/class_editorsceneimportergltf.rst

@@ -0,0 +1,18 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the EditorSceneImporterGLTF.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_EditorSceneImporterGLTF:
+
+EditorSceneImporterGLTF
+=======================
+
+**Inherits:** :ref:`EditorSceneImporter<class_EditorSceneImporter>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+
+
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`

+ 47 - 0
classes/class_editorscriptpicker.rst

@@ -0,0 +1,47 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the EditorScriptPicker.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_EditorScriptPicker:
+
+EditorScriptPicker
+==================
+
+**Inherits:** :ref:`EditorResourcePicker<class_EditorResourcePicker>` **<** :ref:`HBoxContainer<class_HBoxContainer>` **<** :ref:`BoxContainer<class_BoxContainer>` **<** :ref:`Container<class_Container>` **<** :ref:`Control<class_Control>` **<** :ref:`CanvasItem<class_CanvasItem>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+
+Godot editor's control for selecting the ``script`` property of a :ref:`Node<class_Node>`.
+
+Description
+-----------
+
+Similar to :ref:`EditorResourcePicker<class_EditorResourcePicker>` this :ref:`Control<class_Control>` node is used in the editor's Inspector dock, but only to edit the ``script`` property of a :ref:`Node<class_Node>`. Default options for creating new resources of all possible subtypes are replaced with dedicated buttons that open the "Attach Node Script" dialog. Can be used with :ref:`EditorInspectorPlugin<class_EditorInspectorPlugin>` to recreate the same behavior.
+
+**Note:** You must set the :ref:`script_owner<class_EditorScriptPicker_property_script_owner>` for the custom context menu items to work.
+
+Properties
+----------
+
++-------------------------+---------------------------------------------------------------------+
+| :ref:`Node<class_Node>` | :ref:`script_owner<class_EditorScriptPicker_property_script_owner>` |
++-------------------------+---------------------------------------------------------------------+
+
+Property Descriptions
+---------------------
+
+.. _class_EditorScriptPicker_property_script_owner:
+
+- :ref:`Node<class_Node>` **script_owner**
+
++----------+-------------------------+
+| *Setter* | set_script_owner(value) |
++----------+-------------------------+
+| *Getter* | get_script_owner()      |
++----------+-------------------------+
+
+The owner :ref:`Node<class_Node>` of the script property that holds the edited resource.
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`

+ 5 - 0
classes/class_editorspinslider.rst

@@ -11,7 +11,12 @@ EditorSpinSlider
 
 
 **Inherits:** :ref:`Range<class_Range>` **<** :ref:`Control<class_Control>` **<** :ref:`CanvasItem<class_CanvasItem>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 **Inherits:** :ref:`Range<class_Range>` **<** :ref:`Control<class_Control>` **<** :ref:`CanvasItem<class_CanvasItem>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
 
+Godot editor's control for editing numeric values.
 
 
+Description
+-----------
+
+This :ref:`Control<class_Control>` node is used in the editor's Inspector dock to allow editing of numeric values. Can be used with :ref:`EditorInspectorPlugin<class_EditorInspectorPlugin>` to recreate the same behavior.
 
 
 Properties
 Properties
 ----------
 ----------

+ 23 - 1
classes/class_engine.rst

@@ -28,6 +28,8 @@ Properties
 +---------------------------+---------------------------------------------------------------------------+----------+
 +---------------------------+---------------------------------------------------------------------------+----------+
 | :ref:`float<class_float>` | :ref:`physics_jitter_fix<class_Engine_property_physics_jitter_fix>`       | ``0.5``  |
 | :ref:`float<class_float>` | :ref:`physics_jitter_fix<class_Engine_property_physics_jitter_fix>`       | ``0.5``  |
 +---------------------------+---------------------------------------------------------------------------+----------+
 +---------------------------+---------------------------------------------------------------------------+----------+
+| :ref:`bool<class_bool>`   | :ref:`print_error_messages<class_Engine_property_print_error_messages>`   | ``true`` |
++---------------------------+---------------------------------------------------------------------------+----------+
 | :ref:`int<class_int>`     | :ref:`target_fps<class_Engine_property_target_fps>`                       | ``0``    |
 | :ref:`int<class_int>`     | :ref:`target_fps<class_Engine_property_target_fps>`                       | ``0``    |
 +---------------------------+---------------------------------------------------------------------------+----------+
 +---------------------------+---------------------------------------------------------------------------+----------+
 | :ref:`float<class_float>` | :ref:`time_scale<class_Engine_property_time_scale>`                       | ``1.0``  |
 | :ref:`float<class_float>` | :ref:`time_scale<class_Engine_property_time_scale>`                       | ``1.0``  |
@@ -126,12 +128,32 @@ The number of fixed iterations per second. This controls how often physics simul
 | *Getter*  | get_physics_jitter_fix()      |
 | *Getter*  | get_physics_jitter_fix()      |
 +-----------+-------------------------------+
 +-----------+-------------------------------+
 
 
-Controls how much physics ticks are synchronized with real time. For 0 or less, the ticks are synchronized. Such values are recommended for network games, where clock synchronization matters. Higher values cause higher deviation of in-game clock and real clock, but allows smoothing out framerate jitters. The default value of 0.5 should be fine for most; values above 2 could cause the game to react to dropped frames with a noticeable delay and are not recommended.
+Controls how much physics ticks are synchronized with real time. For 0 or less, the ticks are synchronized. Such values are recommended for network games, where clock synchronization matters. Higher values cause higher deviation of the in-game clock and real clock but smooth out framerate jitters. The default value of 0.5 should be fine for most; values above 2 could cause the game to react to dropped frames with a noticeable delay and are not recommended.
 
 
 **Note:** For best results, when using a custom physics interpolation solution, the physics jitter fix should be disabled by setting :ref:`physics_jitter_fix<class_Engine_property_physics_jitter_fix>` to ``0``.
 **Note:** For best results, when using a custom physics interpolation solution, the physics jitter fix should be disabled by setting :ref:`physics_jitter_fix<class_Engine_property_physics_jitter_fix>` to ``0``.
 
 
 ----
 ----
 
 
+.. _class_Engine_property_print_error_messages:
+
+- :ref:`bool<class_bool>` **print_error_messages**
+
++-----------+---------------------------------+
+| *Default* | ``true``                        |
++-----------+---------------------------------+
+| *Setter*  | set_print_error_messages(value) |
++-----------+---------------------------------+
+| *Getter*  | is_printing_error_messages()    |
++-----------+---------------------------------+
+
+If ``false``, stops printing error and warning messages to the console and editor Output log. This can be used to hide error and warning messages during unit test suite runs. This property is equivalent to the :ref:`ProjectSettings.application/run/disable_stderr<class_ProjectSettings_property_application/run/disable_stderr>` project setting.
+
+**Warning:** If you set this to ``false`` anywhere in the project, important error messages may be hidden even if they are emitted from other scripts. If this is set to ``false`` in a ``@tool`` script, this will also impact the editor itself. Do *not* report bugs before ensuring error messages are enabled (as they are by default).
+
+**Note:** This property does not impact the editor's Errors tab when running a project from the editor.
+
+----
+
 .. _class_Engine_property_target_fps:
 .. _class_Engine_property_target_fps:
 
 
 - :ref:`int<class_int>` **target_fps**
 - :ref:`int<class_int>` **target_fps**

+ 2 - 2
classes/class_environment.rst

@@ -823,7 +823,7 @@ The length of the transition between the no-blur area and far blur.
 | *Getter*  | get_dof_blur_near_amount()      |
 | *Getter*  | get_dof_blur_near_amount()      |
 +-----------+---------------------------------+
 +-----------+---------------------------------+
 
 
-The amount of near blur for the depth-of-field effect.
+The amount of near blur for the depth-of-field effect. :ref:`dof_blur_far_amount<class_Environment_property_dof_blur_far_amount>` is used if both far and near DOF are enabled.
 
 
 ----
 ----
 
 
@@ -871,7 +871,7 @@ If ``true``, enables the depth-of-field near blur effect.
 | *Getter*  | get_dof_blur_near_quality()      |
 | *Getter*  | get_dof_blur_near_quality()      |
 +-----------+----------------------------------+
 +-----------+----------------------------------+
 
 
-The depth-of-field near blur's quality. Higher values can mitigate the visible banding effect seen at higher strengths, but are much slower.
+The depth-of-field near blur's quality. Higher values can mitigate the visible banding effect seen at higher strengths, but are much slower. :ref:`dof_blur_far_quality<class_Environment_property_dof_blur_far_quality>` is used if both far and near DOF are enabled.
 
 
 ----
 ----
 
 

+ 1 - 1
classes/class_geometryinstance.rst

@@ -9,7 +9,7 @@
 GeometryInstance
 GeometryInstance
 ================
 ================
 
 
-**Inherits:** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`CullInstance<class_CullInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
 
 **Inherited By:** :ref:`CPUParticles<class_CPUParticles>`, :ref:`CSGShape<class_CSGShape>`, :ref:`ImmediateGeometry<class_ImmediateGeometry>`, :ref:`MeshInstance<class_MeshInstance>`, :ref:`MultiMeshInstance<class_MultiMeshInstance>`, :ref:`Particles<class_Particles>`, :ref:`SpriteBase3D<class_SpriteBase3D>`
 **Inherited By:** :ref:`CPUParticles<class_CPUParticles>`, :ref:`CSGShape<class_CSGShape>`, :ref:`ImmediateGeometry<class_ImmediateGeometry>`, :ref:`MeshInstance<class_MeshInstance>`, :ref:`MultiMeshInstance<class_MultiMeshInstance>`, :ref:`Particles<class_Particles>`, :ref:`SpriteBase3D<class_SpriteBase3D>`
 
 

+ 2 - 2
classes/class_giprobe.rst

@@ -9,7 +9,7 @@
 GIProbe
 GIProbe
 =======
 =======
 
 
-**Inherits:** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`CullInstance<class_CullInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
 
 Real-time global illumination (GI) probe.
 Real-time global illumination (GI) probe.
 
 
@@ -125,7 +125,7 @@ Offsets the lookup of the light contribution from the ``GIProbe``. This can be u
 | *Getter*  | is_compressed()     |
 | *Getter*  | is_compressed()     |
 +-----------+---------------------+
 +-----------+---------------------+
 
 
-If ``true``, the data for this ``GIProbe`` will be compressed. Compression saves space, but results in far worse visual quality.
+*Deprecated.* This property has been deprecated due to known bugs and no longer has any effect when enabled.
 
 
 ----
 ----
 
 

+ 248 - 0
classes/class_gltfaccessor.rst

@@ -0,0 +1,248 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the GLTFAccessor.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_GLTFAccessor:
+
+GLTFAccessor
+============
+
+**Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+
+
+
+Properties
+----------
+
++-------------------------------------------+-------------------------------------------------------------------------------------------------+-----------------------+
+| :ref:`int<class_int>`                     | :ref:`buffer_view<class_GLTFAccessor_property_buffer_view>`                                     | ``0``                 |
++-------------------------------------------+-------------------------------------------------------------------------------------------------+-----------------------+
+| :ref:`int<class_int>`                     | :ref:`byte_offset<class_GLTFAccessor_property_byte_offset>`                                     | ``0``                 |
++-------------------------------------------+-------------------------------------------------------------------------------------------------+-----------------------+
+| :ref:`int<class_int>`                     | :ref:`component_type<class_GLTFAccessor_property_component_type>`                               | ``0``                 |
++-------------------------------------------+-------------------------------------------------------------------------------------------------+-----------------------+
+| :ref:`int<class_int>`                     | :ref:`count<class_GLTFAccessor_property_count>`                                                 | ``0``                 |
++-------------------------------------------+-------------------------------------------------------------------------------------------------+-----------------------+
+| :ref:`PoolRealArray<class_PoolRealArray>` | :ref:`max<class_GLTFAccessor_property_max>`                                                     | ``PoolRealArray(  )`` |
++-------------------------------------------+-------------------------------------------------------------------------------------------------+-----------------------+
+| :ref:`PoolRealArray<class_PoolRealArray>` | :ref:`min<class_GLTFAccessor_property_min>`                                                     | ``PoolRealArray(  )`` |
++-------------------------------------------+-------------------------------------------------------------------------------------------------+-----------------------+
+| :ref:`bool<class_bool>`                   | :ref:`normalized<class_GLTFAccessor_property_normalized>`                                       | ``false``             |
++-------------------------------------------+-------------------------------------------------------------------------------------------------+-----------------------+
+| :ref:`int<class_int>`                     | :ref:`sparse_count<class_GLTFAccessor_property_sparse_count>`                                   | ``0``                 |
++-------------------------------------------+-------------------------------------------------------------------------------------------------+-----------------------+
+| :ref:`int<class_int>`                     | :ref:`sparse_indices_buffer_view<class_GLTFAccessor_property_sparse_indices_buffer_view>`       | ``0``                 |
++-------------------------------------------+-------------------------------------------------------------------------------------------------+-----------------------+
+| :ref:`int<class_int>`                     | :ref:`sparse_indices_byte_offset<class_GLTFAccessor_property_sparse_indices_byte_offset>`       | ``0``                 |
++-------------------------------------------+-------------------------------------------------------------------------------------------------+-----------------------+
+| :ref:`int<class_int>`                     | :ref:`sparse_indices_component_type<class_GLTFAccessor_property_sparse_indices_component_type>` | ``0``                 |
++-------------------------------------------+-------------------------------------------------------------------------------------------------+-----------------------+
+| :ref:`int<class_int>`                     | :ref:`sparse_values_buffer_view<class_GLTFAccessor_property_sparse_values_buffer_view>`         | ``0``                 |
++-------------------------------------------+-------------------------------------------------------------------------------------------------+-----------------------+
+| :ref:`int<class_int>`                     | :ref:`sparse_values_byte_offset<class_GLTFAccessor_property_sparse_values_byte_offset>`         | ``0``                 |
++-------------------------------------------+-------------------------------------------------------------------------------------------------+-----------------------+
+| :ref:`int<class_int>`                     | :ref:`type<class_GLTFAccessor_property_type>`                                                   | ``0``                 |
++-------------------------------------------+-------------------------------------------------------------------------------------------------+-----------------------+
+
+Property Descriptions
+---------------------
+
+.. _class_GLTFAccessor_property_buffer_view:
+
+- :ref:`int<class_int>` **buffer_view**
+
++-----------+------------------------+
+| *Default* | ``0``                  |
++-----------+------------------------+
+| *Setter*  | set_buffer_view(value) |
++-----------+------------------------+
+| *Getter*  | get_buffer_view()      |
++-----------+------------------------+
+
+----
+
+.. _class_GLTFAccessor_property_byte_offset:
+
+- :ref:`int<class_int>` **byte_offset**
+
++-----------+------------------------+
+| *Default* | ``0``                  |
++-----------+------------------------+
+| *Setter*  | set_byte_offset(value) |
++-----------+------------------------+
+| *Getter*  | get_byte_offset()      |
++-----------+------------------------+
+
+----
+
+.. _class_GLTFAccessor_property_component_type:
+
+- :ref:`int<class_int>` **component_type**
+
++-----------+---------------------------+
+| *Default* | ``0``                     |
++-----------+---------------------------+
+| *Setter*  | set_component_type(value) |
++-----------+---------------------------+
+| *Getter*  | get_component_type()      |
++-----------+---------------------------+
+
+----
+
+.. _class_GLTFAccessor_property_count:
+
+- :ref:`int<class_int>` **count**
+
++-----------+------------------+
+| *Default* | ``0``            |
++-----------+------------------+
+| *Setter*  | set_count(value) |
++-----------+------------------+
+| *Getter*  | get_count()      |
++-----------+------------------+
+
+----
+
+.. _class_GLTFAccessor_property_max:
+
+- :ref:`PoolRealArray<class_PoolRealArray>` **max**
+
++-----------+-----------------------+
+| *Default* | ``PoolRealArray(  )`` |
++-----------+-----------------------+
+| *Setter*  | set_max(value)        |
++-----------+-----------------------+
+| *Getter*  | get_max()             |
++-----------+-----------------------+
+
+----
+
+.. _class_GLTFAccessor_property_min:
+
+- :ref:`PoolRealArray<class_PoolRealArray>` **min**
+
++-----------+-----------------------+
+| *Default* | ``PoolRealArray(  )`` |
++-----------+-----------------------+
+| *Setter*  | set_min(value)        |
++-----------+-----------------------+
+| *Getter*  | get_min()             |
++-----------+-----------------------+
+
+----
+
+.. _class_GLTFAccessor_property_normalized:
+
+- :ref:`bool<class_bool>` **normalized**
+
++-----------+-----------------------+
+| *Default* | ``false``             |
++-----------+-----------------------+
+| *Setter*  | set_normalized(value) |
++-----------+-----------------------+
+| *Getter*  | get_normalized()      |
++-----------+-----------------------+
+
+----
+
+.. _class_GLTFAccessor_property_sparse_count:
+
+- :ref:`int<class_int>` **sparse_count**
+
++-----------+-------------------------+
+| *Default* | ``0``                   |
++-----------+-------------------------+
+| *Setter*  | set_sparse_count(value) |
++-----------+-------------------------+
+| *Getter*  | get_sparse_count()      |
++-----------+-------------------------+
+
+----
+
+.. _class_GLTFAccessor_property_sparse_indices_buffer_view:
+
+- :ref:`int<class_int>` **sparse_indices_buffer_view**
+
++-----------+---------------------------------------+
+| *Default* | ``0``                                 |
++-----------+---------------------------------------+
+| *Setter*  | set_sparse_indices_buffer_view(value) |
++-----------+---------------------------------------+
+| *Getter*  | get_sparse_indices_buffer_view()      |
++-----------+---------------------------------------+
+
+----
+
+.. _class_GLTFAccessor_property_sparse_indices_byte_offset:
+
+- :ref:`int<class_int>` **sparse_indices_byte_offset**
+
++-----------+---------------------------------------+
+| *Default* | ``0``                                 |
++-----------+---------------------------------------+
+| *Setter*  | set_sparse_indices_byte_offset(value) |
++-----------+---------------------------------------+
+| *Getter*  | get_sparse_indices_byte_offset()      |
++-----------+---------------------------------------+
+
+----
+
+.. _class_GLTFAccessor_property_sparse_indices_component_type:
+
+- :ref:`int<class_int>` **sparse_indices_component_type**
+
++-----------+------------------------------------------+
+| *Default* | ``0``                                    |
++-----------+------------------------------------------+
+| *Setter*  | set_sparse_indices_component_type(value) |
++-----------+------------------------------------------+
+| *Getter*  | get_sparse_indices_component_type()      |
++-----------+------------------------------------------+
+
+----
+
+.. _class_GLTFAccessor_property_sparse_values_buffer_view:
+
+- :ref:`int<class_int>` **sparse_values_buffer_view**
+
++-----------+--------------------------------------+
+| *Default* | ``0``                                |
++-----------+--------------------------------------+
+| *Setter*  | set_sparse_values_buffer_view(value) |
++-----------+--------------------------------------+
+| *Getter*  | get_sparse_values_buffer_view()      |
++-----------+--------------------------------------+
+
+----
+
+.. _class_GLTFAccessor_property_sparse_values_byte_offset:
+
+- :ref:`int<class_int>` **sparse_values_byte_offset**
+
++-----------+--------------------------------------+
+| *Default* | ``0``                                |
++-----------+--------------------------------------+
+| *Setter*  | set_sparse_values_byte_offset(value) |
++-----------+--------------------------------------+
+| *Getter*  | get_sparse_values_byte_offset()      |
++-----------+--------------------------------------+
+
+----
+
+.. _class_GLTFAccessor_property_type:
+
+- :ref:`int<class_int>` **type**
+
++-----------+-----------------+
+| *Default* | ``0``           |
++-----------+-----------------+
+| *Setter*  | set_type(value) |
++-----------+-----------------+
+| *Getter*  | get_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.)`

+ 40 - 0
classes/class_gltfanimation.rst

@@ -0,0 +1,40 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the GLTFAnimation.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_GLTFAnimation:
+
+GLTFAnimation
+=============
+
+**Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+
+
+
+Properties
+----------
+
++-------------------------+------------------------------------------------+-----------+
+| :ref:`bool<class_bool>` | :ref:`loop<class_GLTFAnimation_property_loop>` | ``false`` |
++-------------------------+------------------------------------------------+-----------+
+
+Property Descriptions
+---------------------
+
+.. _class_GLTFAnimation_property_loop:
+
+- :ref:`bool<class_bool>` **loop**
+
++-----------+-----------------+
+| *Default* | ``false``       |
++-----------+-----------------+
+| *Setter*  | set_loop(value) |
++-----------+-----------------+
+| *Getter*  | get_loop()      |
++-----------+-----------------+
+
+.. |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.)`

+ 104 - 0
classes/class_gltfbufferview.rst

@@ -0,0 +1,104 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the GLTFBufferView.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_GLTFBufferView:
+
+GLTFBufferView
+==============
+
+**Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+
+
+
+Properties
+----------
+
++-------------------------+---------------------------------------------------------------+-----------+
+| :ref:`int<class_int>`   | :ref:`buffer<class_GLTFBufferView_property_buffer>`           | ``-1``    |
++-------------------------+---------------------------------------------------------------+-----------+
+| :ref:`int<class_int>`   | :ref:`byte_length<class_GLTFBufferView_property_byte_length>` | ``0``     |
++-------------------------+---------------------------------------------------------------+-----------+
+| :ref:`int<class_int>`   | :ref:`byte_offset<class_GLTFBufferView_property_byte_offset>` | ``0``     |
++-------------------------+---------------------------------------------------------------+-----------+
+| :ref:`int<class_int>`   | :ref:`byte_stride<class_GLTFBufferView_property_byte_stride>` | ``-1``    |
++-------------------------+---------------------------------------------------------------+-----------+
+| :ref:`bool<class_bool>` | :ref:`indices<class_GLTFBufferView_property_indices>`         | ``false`` |
++-------------------------+---------------------------------------------------------------+-----------+
+
+Property Descriptions
+---------------------
+
+.. _class_GLTFBufferView_property_buffer:
+
+- :ref:`int<class_int>` **buffer**
+
++-----------+-------------------+
+| *Default* | ``-1``            |
++-----------+-------------------+
+| *Setter*  | set_buffer(value) |
++-----------+-------------------+
+| *Getter*  | get_buffer()      |
++-----------+-------------------+
+
+----
+
+.. _class_GLTFBufferView_property_byte_length:
+
+- :ref:`int<class_int>` **byte_length**
+
++-----------+------------------------+
+| *Default* | ``0``                  |
++-----------+------------------------+
+| *Setter*  | set_byte_length(value) |
++-----------+------------------------+
+| *Getter*  | get_byte_length()      |
++-----------+------------------------+
+
+----
+
+.. _class_GLTFBufferView_property_byte_offset:
+
+- :ref:`int<class_int>` **byte_offset**
+
++-----------+------------------------+
+| *Default* | ``0``                  |
++-----------+------------------------+
+| *Setter*  | set_byte_offset(value) |
++-----------+------------------------+
+| *Getter*  | get_byte_offset()      |
++-----------+------------------------+
+
+----
+
+.. _class_GLTFBufferView_property_byte_stride:
+
+- :ref:`int<class_int>` **byte_stride**
+
++-----------+------------------------+
+| *Default* | ``-1``                 |
++-----------+------------------------+
+| *Setter*  | set_byte_stride(value) |
++-----------+------------------------+
+| *Getter*  | get_byte_stride()      |
++-----------+------------------------+
+
+----
+
+.. _class_GLTFBufferView_property_indices:
+
+- :ref:`bool<class_bool>` **indices**
+
++-----------+--------------------+
+| *Default* | ``false``          |
++-----------+--------------------+
+| *Setter*  | set_indices(value) |
++-----------+--------------------+
+| *Getter*  | get_indices()      |
++-----------+--------------------+
+
+.. |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.)`

+ 88 - 0
classes/class_gltfcamera.rst

@@ -0,0 +1,88 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the GLTFCamera.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_GLTFCamera:
+
+GLTFCamera
+==========
+
+**Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+
+
+
+Properties
+----------
+
++---------------------------+-----------------------------------------------------------+------------+
+| :ref:`float<class_float>` | :ref:`fov_size<class_GLTFCamera_property_fov_size>`       | ``75.0``   |
++---------------------------+-----------------------------------------------------------+------------+
+| :ref:`bool<class_bool>`   | :ref:`perspective<class_GLTFCamera_property_perspective>` | ``true``   |
++---------------------------+-----------------------------------------------------------+------------+
+| :ref:`float<class_float>` | :ref:`zfar<class_GLTFCamera_property_zfar>`               | ``4000.0`` |
++---------------------------+-----------------------------------------------------------+------------+
+| :ref:`float<class_float>` | :ref:`znear<class_GLTFCamera_property_znear>`             | ``0.05``   |
++---------------------------+-----------------------------------------------------------+------------+
+
+Property Descriptions
+---------------------
+
+.. _class_GLTFCamera_property_fov_size:
+
+- :ref:`float<class_float>` **fov_size**
+
++-----------+---------------------+
+| *Default* | ``75.0``            |
++-----------+---------------------+
+| *Setter*  | set_fov_size(value) |
++-----------+---------------------+
+| *Getter*  | get_fov_size()      |
++-----------+---------------------+
+
+----
+
+.. _class_GLTFCamera_property_perspective:
+
+- :ref:`bool<class_bool>` **perspective**
+
++-----------+------------------------+
+| *Default* | ``true``               |
++-----------+------------------------+
+| *Setter*  | set_perspective(value) |
++-----------+------------------------+
+| *Getter*  | get_perspective()      |
++-----------+------------------------+
+
+----
+
+.. _class_GLTFCamera_property_zfar:
+
+- :ref:`float<class_float>` **zfar**
+
++-----------+-----------------+
+| *Default* | ``4000.0``      |
++-----------+-----------------+
+| *Setter*  | set_zfar(value) |
++-----------+-----------------+
+| *Getter*  | get_zfar()      |
++-----------+-----------------+
+
+----
+
+.. _class_GLTFCamera_property_znear:
+
+- :ref:`float<class_float>` **znear**
+
++-----------+------------------+
+| *Default* | ``0.05``         |
++-----------+------------------+
+| *Setter*  | set_znear(value) |
++-----------+------------------+
+| *Getter*  | get_znear()      |
++-----------+------------------+
+
+.. |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.)`

+ 18 - 0
classes/class_gltfdocument.rst

@@ -0,0 +1,18 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the GLTFDocument.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_GLTFDocument:
+
+GLTFDocument
+============
+
+**Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+
+
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`

+ 120 - 0
classes/class_gltflight.rst

@@ -0,0 +1,120 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the GLTFLight.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_GLTFLight:
+
+GLTFLight
+=========
+
+**Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+
+
+
+Properties
+----------
+
++-----------------------------+--------------------------------------------------------------------+-------------------------+
+| :ref:`Color<class_Color>`   | :ref:`color<class_GLTFLight_property_color>`                       | ``Color( 0, 0, 0, 1 )`` |
++-----------------------------+--------------------------------------------------------------------+-------------------------+
+| :ref:`float<class_float>`   | :ref:`inner_cone_angle<class_GLTFLight_property_inner_cone_angle>` | ``0.0``                 |
++-----------------------------+--------------------------------------------------------------------+-------------------------+
+| :ref:`float<class_float>`   | :ref:`intensity<class_GLTFLight_property_intensity>`               | ``0.0``                 |
++-----------------------------+--------------------------------------------------------------------+-------------------------+
+| :ref:`float<class_float>`   | :ref:`outer_cone_angle<class_GLTFLight_property_outer_cone_angle>` | ``0.0``                 |
++-----------------------------+--------------------------------------------------------------------+-------------------------+
+| :ref:`float<class_float>`   | :ref:`range<class_GLTFLight_property_range>`                       | ``0.0``                 |
++-----------------------------+--------------------------------------------------------------------+-------------------------+
+| :ref:`String<class_String>` | :ref:`type<class_GLTFLight_property_type>`                         | ``""``                  |
++-----------------------------+--------------------------------------------------------------------+-------------------------+
+
+Property Descriptions
+---------------------
+
+.. _class_GLTFLight_property_color:
+
+- :ref:`Color<class_Color>` **color**
+
++-----------+-------------------------+
+| *Default* | ``Color( 0, 0, 0, 1 )`` |
++-----------+-------------------------+
+| *Setter*  | set_color(value)        |
++-----------+-------------------------+
+| *Getter*  | get_color()             |
++-----------+-------------------------+
+
+----
+
+.. _class_GLTFLight_property_inner_cone_angle:
+
+- :ref:`float<class_float>` **inner_cone_angle**
+
++-----------+-----------------------------+
+| *Default* | ``0.0``                     |
++-----------+-----------------------------+
+| *Setter*  | set_inner_cone_angle(value) |
++-----------+-----------------------------+
+| *Getter*  | get_inner_cone_angle()      |
++-----------+-----------------------------+
+
+----
+
+.. _class_GLTFLight_property_intensity:
+
+- :ref:`float<class_float>` **intensity**
+
++-----------+----------------------+
+| *Default* | ``0.0``              |
++-----------+----------------------+
+| *Setter*  | set_intensity(value) |
++-----------+----------------------+
+| *Getter*  | get_intensity()      |
++-----------+----------------------+
+
+----
+
+.. _class_GLTFLight_property_outer_cone_angle:
+
+- :ref:`float<class_float>` **outer_cone_angle**
+
++-----------+-----------------------------+
+| *Default* | ``0.0``                     |
++-----------+-----------------------------+
+| *Setter*  | set_outer_cone_angle(value) |
++-----------+-----------------------------+
+| *Getter*  | get_outer_cone_angle()      |
++-----------+-----------------------------+
+
+----
+
+.. _class_GLTFLight_property_range:
+
+- :ref:`float<class_float>` **range**
+
++-----------+------------------+
+| *Default* | ``0.0``          |
++-----------+------------------+
+| *Setter*  | set_range(value) |
++-----------+------------------+
+| *Getter*  | get_range()      |
++-----------+------------------+
+
+----
+
+.. _class_GLTFLight_property_type:
+
+- :ref:`String<class_String>` **type**
+
++-----------+-----------------+
+| *Default* | ``""``          |
++-----------+-----------------+
+| *Setter*  | set_type(value) |
++-----------+-----------------+
+| *Getter*  | get_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.)`

+ 54 - 0
classes/class_gltfmesh.rst

@@ -0,0 +1,54 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the GLTFMesh.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_GLTFMesh:
+
+GLTFMesh
+========
+
+**Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+
+
+
+Properties
+----------
+
++-------------------------------------------+-------------------------------------------------------------+-----------------------+
+| :ref:`PoolRealArray<class_PoolRealArray>` | :ref:`blend_weights<class_GLTFMesh_property_blend_weights>` | ``PoolRealArray(  )`` |
++-------------------------------------------+-------------------------------------------------------------+-----------------------+
+| :ref:`ArrayMesh<class_ArrayMesh>`         | :ref:`mesh<class_GLTFMesh_property_mesh>`                   |                       |
++-------------------------------------------+-------------------------------------------------------------+-----------------------+
+
+Property Descriptions
+---------------------
+
+.. _class_GLTFMesh_property_blend_weights:
+
+- :ref:`PoolRealArray<class_PoolRealArray>` **blend_weights**
+
++-----------+--------------------------+
+| *Default* | ``PoolRealArray(  )``    |
++-----------+--------------------------+
+| *Setter*  | set_blend_weights(value) |
++-----------+--------------------------+
+| *Getter*  | get_blend_weights()      |
++-----------+--------------------------+
+
+----
+
+.. _class_GLTFMesh_property_mesh:
+
+- :ref:`ArrayMesh<class_ArrayMesh>` **mesh**
+
++----------+-----------------+
+| *Setter* | set_mesh(value) |
++----------+-----------------+
+| *Getter* | get_mesh()      |
++----------+-----------------+
+
+.. |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.)`

+ 232 - 0
classes/class_gltfnode.rst

@@ -0,0 +1,232 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the GLTFNode.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_GLTFNode:
+
+GLTFNode
+========
+
+**Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+
+
+
+Properties
+----------
+
++-----------------------------------------+---------------------------------------------------------+-----------------------------------------------------+
+| :ref:`int<class_int>`                   | :ref:`camera<class_GLTFNode_property_camera>`           | ``-1``                                              |
++-----------------------------------------+---------------------------------------------------------+-----------------------------------------------------+
+| :ref:`PoolIntArray<class_PoolIntArray>` | :ref:`children<class_GLTFNode_property_children>`       | ``PoolIntArray(  )``                                |
++-----------------------------------------+---------------------------------------------------------+-----------------------------------------------------+
+| :ref:`int<class_int>`                   | :ref:`height<class_GLTFNode_property_height>`           | ``-1``                                              |
++-----------------------------------------+---------------------------------------------------------+-----------------------------------------------------+
+| :ref:`bool<class_bool>`                 | :ref:`joint<class_GLTFNode_property_joint>`             | ``false``                                           |
++-----------------------------------------+---------------------------------------------------------+-----------------------------------------------------+
+| :ref:`int<class_int>`                   | :ref:`light<class_GLTFNode_property_light>`             | ``-1``                                              |
++-----------------------------------------+---------------------------------------------------------+-----------------------------------------------------+
+| :ref:`int<class_int>`                   | :ref:`mesh<class_GLTFNode_property_mesh>`               | ``-1``                                              |
++-----------------------------------------+---------------------------------------------------------+-----------------------------------------------------+
+| :ref:`int<class_int>`                   | :ref:`parent<class_GLTFNode_property_parent>`           | ``-1``                                              |
++-----------------------------------------+---------------------------------------------------------+-----------------------------------------------------+
+| :ref:`Quat<class_Quat>`                 | :ref:`rotation<class_GLTFNode_property_rotation>`       | ``Quat( 0, 0, 0, 1 )``                              |
++-----------------------------------------+---------------------------------------------------------+-----------------------------------------------------+
+| :ref:`Vector3<class_Vector3>`           | :ref:`scale<class_GLTFNode_property_scale>`             | ``Vector3( 1, 1, 1 )``                              |
++-----------------------------------------+---------------------------------------------------------+-----------------------------------------------------+
+| :ref:`int<class_int>`                   | :ref:`skeleton<class_GLTFNode_property_skeleton>`       | ``-1``                                              |
++-----------------------------------------+---------------------------------------------------------+-----------------------------------------------------+
+| :ref:`int<class_int>`                   | :ref:`skin<class_GLTFNode_property_skin>`               | ``-1``                                              |
++-----------------------------------------+---------------------------------------------------------+-----------------------------------------------------+
+| :ref:`Vector3<class_Vector3>`           | :ref:`translation<class_GLTFNode_property_translation>` | ``Vector3( 0, 0, 0 )``                              |
++-----------------------------------------+---------------------------------------------------------+-----------------------------------------------------+
+| :ref:`Transform<class_Transform>`       | :ref:`xform<class_GLTFNode_property_xform>`             | ``Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )`` |
++-----------------------------------------+---------------------------------------------------------+-----------------------------------------------------+
+
+Property Descriptions
+---------------------
+
+.. _class_GLTFNode_property_camera:
+
+- :ref:`int<class_int>` **camera**
+
++-----------+-------------------+
+| *Default* | ``-1``            |
++-----------+-------------------+
+| *Setter*  | set_camera(value) |
++-----------+-------------------+
+| *Getter*  | get_camera()      |
++-----------+-------------------+
+
+----
+
+.. _class_GLTFNode_property_children:
+
+- :ref:`PoolIntArray<class_PoolIntArray>` **children**
+
++-----------+----------------------+
+| *Default* | ``PoolIntArray(  )`` |
++-----------+----------------------+
+| *Setter*  | set_children(value)  |
++-----------+----------------------+
+| *Getter*  | get_children()       |
++-----------+----------------------+
+
+----
+
+.. _class_GLTFNode_property_height:
+
+- :ref:`int<class_int>` **height**
+
++-----------+-------------------+
+| *Default* | ``-1``            |
++-----------+-------------------+
+| *Setter*  | set_height(value) |
++-----------+-------------------+
+| *Getter*  | get_height()      |
++-----------+-------------------+
+
+----
+
+.. _class_GLTFNode_property_joint:
+
+- :ref:`bool<class_bool>` **joint**
+
++-----------+------------------+
+| *Default* | ``false``        |
++-----------+------------------+
+| *Setter*  | set_joint(value) |
++-----------+------------------+
+| *Getter*  | get_joint()      |
++-----------+------------------+
+
+----
+
+.. _class_GLTFNode_property_light:
+
+- :ref:`int<class_int>` **light**
+
++-----------+------------------+
+| *Default* | ``-1``           |
++-----------+------------------+
+| *Setter*  | set_light(value) |
++-----------+------------------+
+| *Getter*  | get_light()      |
++-----------+------------------+
+
+----
+
+.. _class_GLTFNode_property_mesh:
+
+- :ref:`int<class_int>` **mesh**
+
++-----------+-----------------+
+| *Default* | ``-1``          |
++-----------+-----------------+
+| *Setter*  | set_mesh(value) |
++-----------+-----------------+
+| *Getter*  | get_mesh()      |
++-----------+-----------------+
+
+----
+
+.. _class_GLTFNode_property_parent:
+
+- :ref:`int<class_int>` **parent**
+
++-----------+-------------------+
+| *Default* | ``-1``            |
++-----------+-------------------+
+| *Setter*  | set_parent(value) |
++-----------+-------------------+
+| *Getter*  | get_parent()      |
++-----------+-------------------+
+
+----
+
+.. _class_GLTFNode_property_rotation:
+
+- :ref:`Quat<class_Quat>` **rotation**
+
++-----------+------------------------+
+| *Default* | ``Quat( 0, 0, 0, 1 )`` |
++-----------+------------------------+
+| *Setter*  | set_rotation(value)    |
++-----------+------------------------+
+| *Getter*  | get_rotation()         |
++-----------+------------------------+
+
+----
+
+.. _class_GLTFNode_property_scale:
+
+- :ref:`Vector3<class_Vector3>` **scale**
+
++-----------+------------------------+
+| *Default* | ``Vector3( 1, 1, 1 )`` |
++-----------+------------------------+
+| *Setter*  | set_scale(value)       |
++-----------+------------------------+
+| *Getter*  | get_scale()            |
++-----------+------------------------+
+
+----
+
+.. _class_GLTFNode_property_skeleton:
+
+- :ref:`int<class_int>` **skeleton**
+
++-----------+---------------------+
+| *Default* | ``-1``              |
++-----------+---------------------+
+| *Setter*  | set_skeleton(value) |
++-----------+---------------------+
+| *Getter*  | get_skeleton()      |
++-----------+---------------------+
+
+----
+
+.. _class_GLTFNode_property_skin:
+
+- :ref:`int<class_int>` **skin**
+
++-----------+-----------------+
+| *Default* | ``-1``          |
++-----------+-----------------+
+| *Setter*  | set_skin(value) |
++-----------+-----------------+
+| *Getter*  | get_skin()      |
++-----------+-----------------+
+
+----
+
+.. _class_GLTFNode_property_translation:
+
+- :ref:`Vector3<class_Vector3>` **translation**
+
++-----------+------------------------+
+| *Default* | ``Vector3( 0, 0, 0 )`` |
++-----------+------------------------+
+| *Setter*  | set_translation(value) |
++-----------+------------------------+
+| *Getter*  | get_translation()      |
++-----------+------------------------+
+
+----
+
+.. _class_GLTFNode_property_xform:
+
+- :ref:`Transform<class_Transform>` **xform**
+
++-----------+-----------------------------------------------------+
+| *Default* | ``Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )`` |
++-----------+-----------------------------------------------------+
+| *Setter*  | set_xform(value)                                    |
++-----------+-----------------------------------------------------+
+| *Getter*  | get_xform()                                         |
++-----------+-----------------------------------------------------+
+
+.. |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.)`

+ 118 - 0
classes/class_gltfskeleton.rst

@@ -0,0 +1,118 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the GLTFSkeleton.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_GLTFSkeleton:
+
+GLTFSkeleton
+============
+
+**Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+
+
+
+Properties
+----------
+
++-----------------------------------------+---------------------------------------------------+----------------------+
+| :ref:`PoolIntArray<class_PoolIntArray>` | :ref:`joints<class_GLTFSkeleton_property_joints>` | ``PoolIntArray(  )`` |
++-----------------------------------------+---------------------------------------------------+----------------------+
+| :ref:`PoolIntArray<class_PoolIntArray>` | :ref:`roots<class_GLTFSkeleton_property_roots>`   | ``PoolIntArray(  )`` |
++-----------------------------------------+---------------------------------------------------+----------------------+
+
+Methods
+-------
+
++---------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`BoneAttachment<class_BoneAttachment>` | :ref:`get_bone_attachment<class_GLTFSkeleton_method_get_bone_attachment>` **(** :ref:`int<class_int>` idx **)**                           |
++---------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                       | :ref:`get_bone_attachment_count<class_GLTFSkeleton_method_get_bone_attachment_count>` **(** **)**                                         |
++---------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>`         | :ref:`get_godot_bone_node<class_GLTFSkeleton_method_get_godot_bone_node>` **(** **)**                                                     |
++---------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Skeleton<class_Skeleton>`             | :ref:`get_godot_skeleton<class_GLTFSkeleton_method_get_godot_skeleton>` **(** **)**                                                       |
++---------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                   | :ref:`get_unique_names<class_GLTFSkeleton_method_get_unique_names>` **(** **)**                                                           |
++---------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                        | :ref:`set_godot_bone_node<class_GLTFSkeleton_method_set_godot_bone_node>` **(** :ref:`Dictionary<class_Dictionary>` godot_bone_node **)** |
++---------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                        | :ref:`set_unique_names<class_GLTFSkeleton_method_set_unique_names>` **(** :ref:`Array<class_Array>` unique_names **)**                    |
++---------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+
+
+Property Descriptions
+---------------------
+
+.. _class_GLTFSkeleton_property_joints:
+
+- :ref:`PoolIntArray<class_PoolIntArray>` **joints**
+
++-----------+----------------------+
+| *Default* | ``PoolIntArray(  )`` |
++-----------+----------------------+
+| *Setter*  | set_joints(value)    |
++-----------+----------------------+
+| *Getter*  | get_joints()         |
++-----------+----------------------+
+
+----
+
+.. _class_GLTFSkeleton_property_roots:
+
+- :ref:`PoolIntArray<class_PoolIntArray>` **roots**
+
++-----------+----------------------+
+| *Default* | ``PoolIntArray(  )`` |
++-----------+----------------------+
+| *Setter*  | set_roots(value)     |
++-----------+----------------------+
+| *Getter*  | get_roots()          |
++-----------+----------------------+
+
+Method Descriptions
+-------------------
+
+.. _class_GLTFSkeleton_method_get_bone_attachment:
+
+- :ref:`BoneAttachment<class_BoneAttachment>` **get_bone_attachment** **(** :ref:`int<class_int>` idx **)**
+
+----
+
+.. _class_GLTFSkeleton_method_get_bone_attachment_count:
+
+- :ref:`int<class_int>` **get_bone_attachment_count** **(** **)**
+
+----
+
+.. _class_GLTFSkeleton_method_get_godot_bone_node:
+
+- :ref:`Dictionary<class_Dictionary>` **get_godot_bone_node** **(** **)**
+
+----
+
+.. _class_GLTFSkeleton_method_get_godot_skeleton:
+
+- :ref:`Skeleton<class_Skeleton>` **get_godot_skeleton** **(** **)**
+
+----
+
+.. _class_GLTFSkeleton_method_get_unique_names:
+
+- :ref:`Array<class_Array>` **get_unique_names** **(** **)**
+
+----
+
+.. _class_GLTFSkeleton_method_set_godot_bone_node:
+
+- void **set_godot_bone_node** **(** :ref:`Dictionary<class_Dictionary>` godot_bone_node **)**
+
+----
+
+.. _class_GLTFSkeleton_method_set_unique_names:
+
+- void **set_unique_names** **(** :ref:`Array<class_Array>` unique_names **)**
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`

+ 188 - 0
classes/class_gltfskin.rst

@@ -0,0 +1,188 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the GLTFSkin.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_GLTFSkin:
+
+GLTFSkin
+========
+
+**Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+
+
+
+Properties
+----------
+
++-----------------------------------------+-----------------------------------------------------------------+----------------------+
+| :ref:`Skin<class_Skin>`                 | :ref:`godot_skin<class_GLTFSkin_property_godot_skin>`           |                      |
++-----------------------------------------+-----------------------------------------------------------------+----------------------+
+| :ref:`PoolIntArray<class_PoolIntArray>` | :ref:`joints<class_GLTFSkin_property_joints>`                   | ``PoolIntArray(  )`` |
++-----------------------------------------+-----------------------------------------------------------------+----------------------+
+| :ref:`PoolIntArray<class_PoolIntArray>` | :ref:`joints_original<class_GLTFSkin_property_joints_original>` | ``PoolIntArray(  )`` |
++-----------------------------------------+-----------------------------------------------------------------+----------------------+
+| :ref:`PoolIntArray<class_PoolIntArray>` | :ref:`non_joints<class_GLTFSkin_property_non_joints>`           | ``PoolIntArray(  )`` |
++-----------------------------------------+-----------------------------------------------------------------+----------------------+
+| :ref:`PoolIntArray<class_PoolIntArray>` | :ref:`roots<class_GLTFSkin_property_roots>`                     | ``PoolIntArray(  )`` |
++-----------------------------------------+-----------------------------------------------------------------+----------------------+
+| :ref:`int<class_int>`                   | :ref:`skeleton<class_GLTFSkin_property_skeleton>`               | ``-1``               |
++-----------------------------------------+-----------------------------------------------------------------+----------------------+
+| :ref:`int<class_int>`                   | :ref:`skin_root<class_GLTFSkin_property_skin_root>`             | ``-1``               |
++-----------------------------------------+-----------------------------------------------------------------+----------------------+
+
+Methods
+-------
+
++-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`           | :ref:`get_inverse_binds<class_GLTFSkin_method_get_inverse_binds>` **(** **)**                                                               |
++-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>` | :ref:`get_joint_i_to_bone_i<class_GLTFSkin_method_get_joint_i_to_bone_i>` **(** **)**                                                       |
++-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>` | :ref:`get_joint_i_to_name<class_GLTFSkin_method_get_joint_i_to_name>` **(** **)**                                                           |
++-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                | :ref:`set_inverse_binds<class_GLTFSkin_method_set_inverse_binds>` **(** :ref:`Array<class_Array>` inverse_binds **)**                       |
++-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                | :ref:`set_joint_i_to_bone_i<class_GLTFSkin_method_set_joint_i_to_bone_i>` **(** :ref:`Dictionary<class_Dictionary>` joint_i_to_bone_i **)** |
++-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                | :ref:`set_joint_i_to_name<class_GLTFSkin_method_set_joint_i_to_name>` **(** :ref:`Dictionary<class_Dictionary>` joint_i_to_name **)**       |
++-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
+
+Property Descriptions
+---------------------
+
+.. _class_GLTFSkin_property_godot_skin:
+
+- :ref:`Skin<class_Skin>` **godot_skin**
+
++----------+-----------------------+
+| *Setter* | set_godot_skin(value) |
++----------+-----------------------+
+| *Getter* | get_godot_skin()      |
++----------+-----------------------+
+
+----
+
+.. _class_GLTFSkin_property_joints:
+
+- :ref:`PoolIntArray<class_PoolIntArray>` **joints**
+
++-----------+----------------------+
+| *Default* | ``PoolIntArray(  )`` |
++-----------+----------------------+
+| *Setter*  | set_joints(value)    |
++-----------+----------------------+
+| *Getter*  | get_joints()         |
++-----------+----------------------+
+
+----
+
+.. _class_GLTFSkin_property_joints_original:
+
+- :ref:`PoolIntArray<class_PoolIntArray>` **joints_original**
+
++-----------+----------------------------+
+| *Default* | ``PoolIntArray(  )``       |
++-----------+----------------------------+
+| *Setter*  | set_joints_original(value) |
++-----------+----------------------------+
+| *Getter*  | get_joints_original()      |
++-----------+----------------------------+
+
+----
+
+.. _class_GLTFSkin_property_non_joints:
+
+- :ref:`PoolIntArray<class_PoolIntArray>` **non_joints**
+
++-----------+-----------------------+
+| *Default* | ``PoolIntArray(  )``  |
++-----------+-----------------------+
+| *Setter*  | set_non_joints(value) |
++-----------+-----------------------+
+| *Getter*  | get_non_joints()      |
++-----------+-----------------------+
+
+----
+
+.. _class_GLTFSkin_property_roots:
+
+- :ref:`PoolIntArray<class_PoolIntArray>` **roots**
+
++-----------+----------------------+
+| *Default* | ``PoolIntArray(  )`` |
++-----------+----------------------+
+| *Setter*  | set_roots(value)     |
++-----------+----------------------+
+| *Getter*  | get_roots()          |
++-----------+----------------------+
+
+----
+
+.. _class_GLTFSkin_property_skeleton:
+
+- :ref:`int<class_int>` **skeleton**
+
++-----------+---------------------+
+| *Default* | ``-1``              |
++-----------+---------------------+
+| *Setter*  | set_skeleton(value) |
++-----------+---------------------+
+| *Getter*  | get_skeleton()      |
++-----------+---------------------+
+
+----
+
+.. _class_GLTFSkin_property_skin_root:
+
+- :ref:`int<class_int>` **skin_root**
+
++-----------+----------------------+
+| *Default* | ``-1``               |
++-----------+----------------------+
+| *Setter*  | set_skin_root(value) |
++-----------+----------------------+
+| *Getter*  | get_skin_root()      |
++-----------+----------------------+
+
+Method Descriptions
+-------------------
+
+.. _class_GLTFSkin_method_get_inverse_binds:
+
+- :ref:`Array<class_Array>` **get_inverse_binds** **(** **)**
+
+----
+
+.. _class_GLTFSkin_method_get_joint_i_to_bone_i:
+
+- :ref:`Dictionary<class_Dictionary>` **get_joint_i_to_bone_i** **(** **)**
+
+----
+
+.. _class_GLTFSkin_method_get_joint_i_to_name:
+
+- :ref:`Dictionary<class_Dictionary>` **get_joint_i_to_name** **(** **)**
+
+----
+
+.. _class_GLTFSkin_method_set_inverse_binds:
+
+- void **set_inverse_binds** **(** :ref:`Array<class_Array>` inverse_binds **)**
+
+----
+
+.. _class_GLTFSkin_method_set_joint_i_to_bone_i:
+
+- void **set_joint_i_to_bone_i** **(** :ref:`Dictionary<class_Dictionary>` joint_i_to_bone_i **)**
+
+----
+
+.. _class_GLTFSkin_method_set_joint_i_to_name:
+
+- void **set_joint_i_to_name** **(** :ref:`Dictionary<class_Dictionary>` joint_i_to_name **)**
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`

+ 100 - 0
classes/class_gltfspecgloss.rst

@@ -0,0 +1,100 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the GLTFSpecGloss.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_GLTFSpecGloss:
+
+GLTFSpecGloss
+=============
+
+**Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+
+
+
+Properties
+----------
+
++---------------------------+----------------------------------------------------------------------+-------------------------+
+| :ref:`Color<class_Color>` | :ref:`diffuse_factor<class_GLTFSpecGloss_property_diffuse_factor>`   | ``Color( 1, 1, 1, 1 )`` |
++---------------------------+----------------------------------------------------------------------+-------------------------+
+| :ref:`Image<class_Image>` | :ref:`diffuse_img<class_GLTFSpecGloss_property_diffuse_img>`         |                         |
++---------------------------+----------------------------------------------------------------------+-------------------------+
+| :ref:`float<class_float>` | :ref:`gloss_factor<class_GLTFSpecGloss_property_gloss_factor>`       | ``1.0``                 |
++---------------------------+----------------------------------------------------------------------+-------------------------+
+| :ref:`Image<class_Image>` | :ref:`spec_gloss_img<class_GLTFSpecGloss_property_spec_gloss_img>`   |                         |
++---------------------------+----------------------------------------------------------------------+-------------------------+
+| :ref:`Color<class_Color>` | :ref:`specular_factor<class_GLTFSpecGloss_property_specular_factor>` | ``Color( 1, 1, 1, 1 )`` |
++---------------------------+----------------------------------------------------------------------+-------------------------+
+
+Property Descriptions
+---------------------
+
+.. _class_GLTFSpecGloss_property_diffuse_factor:
+
+- :ref:`Color<class_Color>` **diffuse_factor**
+
++-----------+---------------------------+
+| *Default* | ``Color( 1, 1, 1, 1 )``   |
++-----------+---------------------------+
+| *Setter*  | set_diffuse_factor(value) |
++-----------+---------------------------+
+| *Getter*  | get_diffuse_factor()      |
++-----------+---------------------------+
+
+----
+
+.. _class_GLTFSpecGloss_property_diffuse_img:
+
+- :ref:`Image<class_Image>` **diffuse_img**
+
++----------+------------------------+
+| *Setter* | set_diffuse_img(value) |
++----------+------------------------+
+| *Getter* | get_diffuse_img()      |
++----------+------------------------+
+
+----
+
+.. _class_GLTFSpecGloss_property_gloss_factor:
+
+- :ref:`float<class_float>` **gloss_factor**
+
++-----------+-------------------------+
+| *Default* | ``1.0``                 |
++-----------+-------------------------+
+| *Setter*  | set_gloss_factor(value) |
++-----------+-------------------------+
+| *Getter*  | get_gloss_factor()      |
++-----------+-------------------------+
+
+----
+
+.. _class_GLTFSpecGloss_property_spec_gloss_img:
+
+- :ref:`Image<class_Image>` **spec_gloss_img**
+
++----------+---------------------------+
+| *Setter* | set_spec_gloss_img(value) |
++----------+---------------------------+
+| *Getter* | get_spec_gloss_img()      |
++----------+---------------------------+
+
+----
+
+.. _class_GLTFSpecGloss_property_specular_factor:
+
+- :ref:`Color<class_Color>` **specular_factor**
+
++-----------+----------------------------+
+| *Default* | ``Color( 1, 1, 1, 1 )``    |
++-----------+----------------------------+
+| *Setter*  | set_specular_factor(value) |
++-----------+----------------------------+
+| *Getter*  | get_specular_factor()      |
++-----------+----------------------------+
+
+.. |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.)`

+ 422 - 0
classes/class_gltfstate.rst

@@ -0,0 +1,422 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the GLTFState.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_GLTFState:
+
+GLTFState
+=========
+
+**Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+
+
+
+Properties
+----------
+
++-------------------------------------------+----------------------------------------------------------------------------+-----------------------+
+| :ref:`Array<class_Array>`                 | :ref:`buffers<class_GLTFState_property_buffers>`                           | ``[  ]``              |
++-------------------------------------------+----------------------------------------------------------------------------+-----------------------+
+| :ref:`PoolByteArray<class_PoolByteArray>` | :ref:`glb_data<class_GLTFState_property_glb_data>`                         | ``PoolByteArray(  )`` |
++-------------------------------------------+----------------------------------------------------------------------------+-----------------------+
+| :ref:`Dictionary<class_Dictionary>`       | :ref:`json<class_GLTFState_property_json>`                                 | ``{}``                |
++-------------------------------------------+----------------------------------------------------------------------------+-----------------------+
+| :ref:`int<class_int>`                     | :ref:`major_version<class_GLTFState_property_major_version>`               | ``0``                 |
++-------------------------------------------+----------------------------------------------------------------------------+-----------------------+
+| :ref:`int<class_int>`                     | :ref:`minor_version<class_GLTFState_property_minor_version>`               | ``0``                 |
++-------------------------------------------+----------------------------------------------------------------------------+-----------------------+
+| :ref:`Array<class_Array>`                 | :ref:`root_nodes<class_GLTFState_property_root_nodes>`                     | ``[  ]``              |
++-------------------------------------------+----------------------------------------------------------------------------+-----------------------+
+| :ref:`String<class_String>`               | :ref:`scene_name<class_GLTFState_property_scene_name>`                     | ``""``                |
++-------------------------------------------+----------------------------------------------------------------------------+-----------------------+
+| :ref:`bool<class_bool>`                   | :ref:`use_named_skin_binds<class_GLTFState_property_use_named_skin_binds>` | ``false``             |
++-------------------------------------------+----------------------------------------------------------------------------+-----------------------+
+
+Methods
+-------
+
++-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                     | :ref:`get_accessors<class_GLTFState_method_get_accessors>` **(** **)**                                                                            |
++-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`AnimationPlayer<class_AnimationPlayer>` | :ref:`get_animation_player<class_GLTFState_method_get_animation_player>` **(** :ref:`int<class_int>` idx **)**                                    |
++-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                         | :ref:`get_animation_players_count<class_GLTFState_method_get_animation_players_count>` **(** :ref:`int<class_int>` idx **)**                      |
++-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                     | :ref:`get_animations<class_GLTFState_method_get_animations>` **(** **)**                                                                          |
++-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                     | :ref:`get_buffer_views<class_GLTFState_method_get_buffer_views>` **(** **)**                                                                      |
++-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                     | :ref:`get_cameras<class_GLTFState_method_get_cameras>` **(** **)**                                                                                |
++-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                     | :ref:`get_images<class_GLTFState_method_get_images>` **(** **)**                                                                                  |
++-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                     | :ref:`get_lights<class_GLTFState_method_get_lights>` **(** **)**                                                                                  |
++-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                     | :ref:`get_materials<class_GLTFState_method_get_materials>` **(** **)**                                                                            |
++-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                     | :ref:`get_meshes<class_GLTFState_method_get_meshes>` **(** **)**                                                                                  |
++-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                     | :ref:`get_nodes<class_GLTFState_method_get_nodes>` **(** **)**                                                                                    |
++-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Node<class_Node>`                       | :ref:`get_scene_node<class_GLTFState_method_get_scene_node>` **(** :ref:`int<class_int>` idx **)**                                                |
++-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>`           | :ref:`get_skeleton_to_node<class_GLTFState_method_get_skeleton_to_node>` **(** **)**                                                              |
++-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                     | :ref:`get_skeletons<class_GLTFState_method_get_skeletons>` **(** **)**                                                                            |
++-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                     | :ref:`get_skins<class_GLTFState_method_get_skins>` **(** **)**                                                                                    |
++-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                     | :ref:`get_textures<class_GLTFState_method_get_textures>` **(** **)**                                                                              |
++-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                     | :ref:`get_unique_animation_names<class_GLTFState_method_get_unique_animation_names>` **(** **)**                                                  |
++-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                     | :ref:`get_unique_names<class_GLTFState_method_get_unique_names>` **(** **)**                                                                      |
++-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`set_accessors<class_GLTFState_method_set_accessors>` **(** :ref:`Array<class_Array>` accessors **)**                                        |
++-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`set_animations<class_GLTFState_method_set_animations>` **(** :ref:`Array<class_Array>` animations **)**                                     |
++-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`set_buffer_views<class_GLTFState_method_set_buffer_views>` **(** :ref:`Array<class_Array>` buffer_views **)**                               |
++-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`set_cameras<class_GLTFState_method_set_cameras>` **(** :ref:`Array<class_Array>` cameras **)**                                              |
++-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`set_images<class_GLTFState_method_set_images>` **(** :ref:`Array<class_Array>` images **)**                                                 |
++-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`set_lights<class_GLTFState_method_set_lights>` **(** :ref:`Array<class_Array>` lights **)**                                                 |
++-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`set_materials<class_GLTFState_method_set_materials>` **(** :ref:`Array<class_Array>` materials **)**                                        |
++-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`set_meshes<class_GLTFState_method_set_meshes>` **(** :ref:`Array<class_Array>` meshes **)**                                                 |
++-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`set_nodes<class_GLTFState_method_set_nodes>` **(** :ref:`Array<class_Array>` nodes **)**                                                    |
++-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`set_skeleton_to_node<class_GLTFState_method_set_skeleton_to_node>` **(** :ref:`Dictionary<class_Dictionary>` skeleton_to_node **)**         |
++-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`set_skeletons<class_GLTFState_method_set_skeletons>` **(** :ref:`Array<class_Array>` skeletons **)**                                        |
++-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`set_skins<class_GLTFState_method_set_skins>` **(** :ref:`Array<class_Array>` skins **)**                                                    |
++-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`set_textures<class_GLTFState_method_set_textures>` **(** :ref:`Array<class_Array>` textures **)**                                           |
++-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`set_unique_animation_names<class_GLTFState_method_set_unique_animation_names>` **(** :ref:`Array<class_Array>` unique_animation_names **)** |
++-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`set_unique_names<class_GLTFState_method_set_unique_names>` **(** :ref:`Array<class_Array>` unique_names **)**                               |
++-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+
+Property Descriptions
+---------------------
+
+.. _class_GLTFState_property_buffers:
+
+- :ref:`Array<class_Array>` **buffers**
+
++-----------+--------------------+
+| *Default* | ``[  ]``           |
++-----------+--------------------+
+| *Setter*  | set_buffers(value) |
++-----------+--------------------+
+| *Getter*  | get_buffers()      |
++-----------+--------------------+
+
+----
+
+.. _class_GLTFState_property_glb_data:
+
+- :ref:`PoolByteArray<class_PoolByteArray>` **glb_data**
+
++-----------+-----------------------+
+| *Default* | ``PoolByteArray(  )`` |
++-----------+-----------------------+
+| *Setter*  | set_glb_data(value)   |
++-----------+-----------------------+
+| *Getter*  | get_glb_data()        |
++-----------+-----------------------+
+
+----
+
+.. _class_GLTFState_property_json:
+
+- :ref:`Dictionary<class_Dictionary>` **json**
+
++-----------+-----------------+
+| *Default* | ``{}``          |
++-----------+-----------------+
+| *Setter*  | set_json(value) |
++-----------+-----------------+
+| *Getter*  | get_json()      |
++-----------+-----------------+
+
+----
+
+.. _class_GLTFState_property_major_version:
+
+- :ref:`int<class_int>` **major_version**
+
++-----------+--------------------------+
+| *Default* | ``0``                    |
++-----------+--------------------------+
+| *Setter*  | set_major_version(value) |
++-----------+--------------------------+
+| *Getter*  | get_major_version()      |
++-----------+--------------------------+
+
+----
+
+.. _class_GLTFState_property_minor_version:
+
+- :ref:`int<class_int>` **minor_version**
+
++-----------+--------------------------+
+| *Default* | ``0``                    |
++-----------+--------------------------+
+| *Setter*  | set_minor_version(value) |
++-----------+--------------------------+
+| *Getter*  | get_minor_version()      |
++-----------+--------------------------+
+
+----
+
+.. _class_GLTFState_property_root_nodes:
+
+- :ref:`Array<class_Array>` **root_nodes**
+
++-----------+-----------------------+
+| *Default* | ``[  ]``              |
++-----------+-----------------------+
+| *Setter*  | set_root_nodes(value) |
++-----------+-----------------------+
+| *Getter*  | get_root_nodes()      |
++-----------+-----------------------+
+
+----
+
+.. _class_GLTFState_property_scene_name:
+
+- :ref:`String<class_String>` **scene_name**
+
++-----------+-----------------------+
+| *Default* | ``""``                |
++-----------+-----------------------+
+| *Setter*  | set_scene_name(value) |
++-----------+-----------------------+
+| *Getter*  | get_scene_name()      |
++-----------+-----------------------+
+
+----
+
+.. _class_GLTFState_property_use_named_skin_binds:
+
+- :ref:`bool<class_bool>` **use_named_skin_binds**
+
++-----------+---------------------------------+
+| *Default* | ``false``                       |
++-----------+---------------------------------+
+| *Setter*  | set_use_named_skin_binds(value) |
++-----------+---------------------------------+
+| *Getter*  | get_use_named_skin_binds()      |
++-----------+---------------------------------+
+
+Method Descriptions
+-------------------
+
+.. _class_GLTFState_method_get_accessors:
+
+- :ref:`Array<class_Array>` **get_accessors** **(** **)**
+
+----
+
+.. _class_GLTFState_method_get_animation_player:
+
+- :ref:`AnimationPlayer<class_AnimationPlayer>` **get_animation_player** **(** :ref:`int<class_int>` idx **)**
+
+----
+
+.. _class_GLTFState_method_get_animation_players_count:
+
+- :ref:`int<class_int>` **get_animation_players_count** **(** :ref:`int<class_int>` idx **)**
+
+----
+
+.. _class_GLTFState_method_get_animations:
+
+- :ref:`Array<class_Array>` **get_animations** **(** **)**
+
+----
+
+.. _class_GLTFState_method_get_buffer_views:
+
+- :ref:`Array<class_Array>` **get_buffer_views** **(** **)**
+
+----
+
+.. _class_GLTFState_method_get_cameras:
+
+- :ref:`Array<class_Array>` **get_cameras** **(** **)**
+
+----
+
+.. _class_GLTFState_method_get_images:
+
+- :ref:`Array<class_Array>` **get_images** **(** **)**
+
+----
+
+.. _class_GLTFState_method_get_lights:
+
+- :ref:`Array<class_Array>` **get_lights** **(** **)**
+
+----
+
+.. _class_GLTFState_method_get_materials:
+
+- :ref:`Array<class_Array>` **get_materials** **(** **)**
+
+----
+
+.. _class_GLTFState_method_get_meshes:
+
+- :ref:`Array<class_Array>` **get_meshes** **(** **)**
+
+----
+
+.. _class_GLTFState_method_get_nodes:
+
+- :ref:`Array<class_Array>` **get_nodes** **(** **)**
+
+----
+
+.. _class_GLTFState_method_get_scene_node:
+
+- :ref:`Node<class_Node>` **get_scene_node** **(** :ref:`int<class_int>` idx **)**
+
+----
+
+.. _class_GLTFState_method_get_skeleton_to_node:
+
+- :ref:`Dictionary<class_Dictionary>` **get_skeleton_to_node** **(** **)**
+
+----
+
+.. _class_GLTFState_method_get_skeletons:
+
+- :ref:`Array<class_Array>` **get_skeletons** **(** **)**
+
+----
+
+.. _class_GLTFState_method_get_skins:
+
+- :ref:`Array<class_Array>` **get_skins** **(** **)**
+
+----
+
+.. _class_GLTFState_method_get_textures:
+
+- :ref:`Array<class_Array>` **get_textures** **(** **)**
+
+----
+
+.. _class_GLTFState_method_get_unique_animation_names:
+
+- :ref:`Array<class_Array>` **get_unique_animation_names** **(** **)**
+
+----
+
+.. _class_GLTFState_method_get_unique_names:
+
+- :ref:`Array<class_Array>` **get_unique_names** **(** **)**
+
+----
+
+.. _class_GLTFState_method_set_accessors:
+
+- void **set_accessors** **(** :ref:`Array<class_Array>` accessors **)**
+
+----
+
+.. _class_GLTFState_method_set_animations:
+
+- void **set_animations** **(** :ref:`Array<class_Array>` animations **)**
+
+----
+
+.. _class_GLTFState_method_set_buffer_views:
+
+- void **set_buffer_views** **(** :ref:`Array<class_Array>` buffer_views **)**
+
+----
+
+.. _class_GLTFState_method_set_cameras:
+
+- void **set_cameras** **(** :ref:`Array<class_Array>` cameras **)**
+
+----
+
+.. _class_GLTFState_method_set_images:
+
+- void **set_images** **(** :ref:`Array<class_Array>` images **)**
+
+----
+
+.. _class_GLTFState_method_set_lights:
+
+- void **set_lights** **(** :ref:`Array<class_Array>` lights **)**
+
+----
+
+.. _class_GLTFState_method_set_materials:
+
+- void **set_materials** **(** :ref:`Array<class_Array>` materials **)**
+
+----
+
+.. _class_GLTFState_method_set_meshes:
+
+- void **set_meshes** **(** :ref:`Array<class_Array>` meshes **)**
+
+----
+
+.. _class_GLTFState_method_set_nodes:
+
+- void **set_nodes** **(** :ref:`Array<class_Array>` nodes **)**
+
+----
+
+.. _class_GLTFState_method_set_skeleton_to_node:
+
+- void **set_skeleton_to_node** **(** :ref:`Dictionary<class_Dictionary>` skeleton_to_node **)**
+
+----
+
+.. _class_GLTFState_method_set_skeletons:
+
+- void **set_skeletons** **(** :ref:`Array<class_Array>` skeletons **)**
+
+----
+
+.. _class_GLTFState_method_set_skins:
+
+- void **set_skins** **(** :ref:`Array<class_Array>` skins **)**
+
+----
+
+.. _class_GLTFState_method_set_textures:
+
+- void **set_textures** **(** :ref:`Array<class_Array>` textures **)**
+
+----
+
+.. _class_GLTFState_method_set_unique_animation_names:
+
+- void **set_unique_animation_names** **(** :ref:`Array<class_Array>` unique_animation_names **)**
+
+----
+
+.. _class_GLTFState_method_set_unique_names:
+
+- void **set_unique_names** **(** :ref:`Array<class_Array>` unique_names **)**
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`

+ 40 - 0
classes/class_gltftexture.rst

@@ -0,0 +1,40 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the GLTFTexture.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_GLTFTexture:
+
+GLTFTexture
+===========
+
+**Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+
+
+
+Properties
+----------
+
++-----------------------+--------------------------------------------------------+-------+
+| :ref:`int<class_int>` | :ref:`src_image<class_GLTFTexture_property_src_image>` | ``0`` |
++-----------------------+--------------------------------------------------------+-------+
+
+Property Descriptions
+---------------------
+
+.. _class_GLTFTexture_property_src_image:
+
+- :ref:`int<class_int>` **src_image**
+
++-----------+----------------------+
+| *Default* | ``0``                |
++-----------+----------------------+
+| *Setter*  | set_src_image(value) |
++-----------+----------------------+
+| *Getter*  | get_src_image()      |
++-----------+----------------------+
+
+.. |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.)`

+ 72 - 0
classes/class_graphedit.rst

@@ -38,12 +38,20 @@ Properties
 +------------------------------------------+----------------------------------------------------------------------+------------------------------+
 +------------------------------------------+----------------------------------------------------------------------+------------------------------+
 | :ref:`Vector2<class_Vector2>`            | :ref:`scroll_offset<class_GraphEdit_property_scroll_offset>`         | ``Vector2( 0, 0 )``          |
 | :ref:`Vector2<class_Vector2>`            | :ref:`scroll_offset<class_GraphEdit_property_scroll_offset>`         | ``Vector2( 0, 0 )``          |
 +------------------------------------------+----------------------------------------------------------------------+------------------------------+
 +------------------------------------------+----------------------------------------------------------------------+------------------------------+
+| :ref:`bool<class_bool>`                  | :ref:`show_zoom_label<class_GraphEdit_property_show_zoom_label>`     | ``false``                    |
++------------------------------------------+----------------------------------------------------------------------+------------------------------+
 | :ref:`int<class_int>`                    | :ref:`snap_distance<class_GraphEdit_property_snap_distance>`         | ``20``                       |
 | :ref:`int<class_int>`                    | :ref:`snap_distance<class_GraphEdit_property_snap_distance>`         | ``20``                       |
 +------------------------------------------+----------------------------------------------------------------------+------------------------------+
 +------------------------------------------+----------------------------------------------------------------------+------------------------------+
 | :ref:`bool<class_bool>`                  | :ref:`use_snap<class_GraphEdit_property_use_snap>`                   | ``true``                     |
 | :ref:`bool<class_bool>`                  | :ref:`use_snap<class_GraphEdit_property_use_snap>`                   | ``true``                     |
 +------------------------------------------+----------------------------------------------------------------------+------------------------------+
 +------------------------------------------+----------------------------------------------------------------------+------------------------------+
 | :ref:`float<class_float>`                | :ref:`zoom<class_GraphEdit_property_zoom>`                           | ``1.0``                      |
 | :ref:`float<class_float>`                | :ref:`zoom<class_GraphEdit_property_zoom>`                           | ``1.0``                      |
 +------------------------------------------+----------------------------------------------------------------------+------------------------------+
 +------------------------------------------+----------------------------------------------------------------------+------------------------------+
+| :ref:`float<class_float>`                | :ref:`zoom_max<class_GraphEdit_property_zoom_max>`                   | ``2.0736``                   |
++------------------------------------------+----------------------------------------------------------------------+------------------------------+
+| :ref:`float<class_float>`                | :ref:`zoom_min<class_GraphEdit_property_zoom_min>`                   | ``0.232568``                 |
++------------------------------------------+----------------------------------------------------------------------+------------------------------+
+| :ref:`float<class_float>`                | :ref:`zoom_step<class_GraphEdit_property_zoom_step>`                 | ``1.2``                      |
++------------------------------------------+----------------------------------------------------------------------+------------------------------+
 
 
 Methods
 Methods
 -------
 -------
@@ -309,6 +317,22 @@ The scroll offset.
 
 
 ----
 ----
 
 
+.. _class_GraphEdit_property_show_zoom_label:
+
+- :ref:`bool<class_bool>` **show_zoom_label**
+
++-----------+----------------------------+
+| *Default* | ``false``                  |
++-----------+----------------------------+
+| *Setter*  | set_show_zoom_label(value) |
++-----------+----------------------------+
+| *Getter*  | is_showing_zoom_label()    |
++-----------+----------------------------+
+
+If ``true``, makes a label with the current zoom level visible. The zoom value is displayed in percents.
+
+----
+
 .. _class_GraphEdit_property_snap_distance:
 .. _class_GraphEdit_property_snap_distance:
 
 
 - :ref:`int<class_int>` **snap_distance**
 - :ref:`int<class_int>` **snap_distance**
@@ -355,6 +379,54 @@ If ``true``, enables snapping.
 
 
 The current zoom value.
 The current zoom value.
 
 
+----
+
+.. _class_GraphEdit_property_zoom_max:
+
+- :ref:`float<class_float>` **zoom_max**
+
++-----------+---------------------+
+| *Default* | ``2.0736``          |
++-----------+---------------------+
+| *Setter*  | set_zoom_max(value) |
++-----------+---------------------+
+| *Getter*  | get_zoom_max()      |
++-----------+---------------------+
+
+The upper zoom limit.
+
+----
+
+.. _class_GraphEdit_property_zoom_min:
+
+- :ref:`float<class_float>` **zoom_min**
+
++-----------+---------------------+
+| *Default* | ``0.232568``        |
++-----------+---------------------+
+| *Setter*  | set_zoom_min(value) |
++-----------+---------------------+
+| *Getter*  | get_zoom_min()      |
++-----------+---------------------+
+
+The lower zoom limit.
+
+----
+
+.. _class_GraphEdit_property_zoom_step:
+
+- :ref:`float<class_float>` **zoom_step**
+
++-----------+----------------------+
+| *Default* | ``1.2``              |
++-----------+----------------------+
+| *Setter*  | set_zoom_step(value) |
++-----------+----------------------+
+| *Getter*  | get_zoom_step()      |
++-----------+----------------------+
+
+The step of each zoom level.
+
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
 
 

+ 70 - 8
classes/class_graphnode.rst

@@ -79,6 +79,18 @@ Methods
 +-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                          | :ref:`set_slot<class_GraphNode_method_set_slot>` **(** :ref:`int<class_int>` idx, :ref:`bool<class_bool>` enable_left, :ref:`int<class_int>` type_left, :ref:`Color<class_Color>` color_left, :ref:`bool<class_bool>` enable_right, :ref:`int<class_int>` type_right, :ref:`Color<class_Color>` color_right, :ref:`Texture<class_Texture>` custom_left=null, :ref:`Texture<class_Texture>` custom_right=null **)** |
 | void                          | :ref:`set_slot<class_GraphNode_method_set_slot>` **(** :ref:`int<class_int>` idx, :ref:`bool<class_bool>` enable_left, :ref:`int<class_int>` type_left, :ref:`Color<class_Color>` color_left, :ref:`bool<class_bool>` enable_right, :ref:`int<class_int>` type_right, :ref:`Color<class_Color>` color_right, :ref:`Texture<class_Texture>` custom_left=null, :ref:`Texture<class_Texture>` custom_right=null **)** |
 +-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                          | :ref:`set_slot_color_left<class_GraphNode_method_set_slot_color_left>` **(** :ref:`int<class_int>` idx, :ref:`Color<class_Color>` color_left **)**                                                                                                                                                                                                                                                                 |
++-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                          | :ref:`set_slot_color_right<class_GraphNode_method_set_slot_color_right>` **(** :ref:`int<class_int>` idx, :ref:`Color<class_Color>` color_right **)**                                                                                                                                                                                                                                                              |
++-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                          | :ref:`set_slot_enabled_left<class_GraphNode_method_set_slot_enabled_left>` **(** :ref:`int<class_int>` idx, :ref:`bool<class_bool>` enable_left **)**                                                                                                                                                                                                                                                              |
++-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                          | :ref:`set_slot_enabled_right<class_GraphNode_method_set_slot_enabled_right>` **(** :ref:`int<class_int>` idx, :ref:`bool<class_bool>` enable_right **)**                                                                                                                                                                                                                                                           |
++-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                          | :ref:`set_slot_type_left<class_GraphNode_method_set_slot_type_left>` **(** :ref:`int<class_int>` idx, :ref:`int<class_int>` type_left **)**                                                                                                                                                                                                                                                                        |
++-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                          | :ref:`set_slot_type_right<class_GraphNode_method_set_slot_type_right>` **(** :ref:`int<class_int>` idx, :ref:`int<class_int>` type_right **)**                                                                                                                                                                                                                                                                     |
++-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 
 Theme Properties
 Theme Properties
 ----------------
 ----------------
@@ -333,7 +345,7 @@ Disables input and output slot whose index is ``idx``.
 
 
 - :ref:`Color<class_Color>` **get_connection_input_color** **(** :ref:`int<class_int>` idx **)**
 - :ref:`Color<class_Color>` **get_connection_input_color** **(** :ref:`int<class_int>` idx **)**
 
 
-Returns the color of the input connection ``idx``.
+Returns the :ref:`Color<class_Color>` of the input connection ``idx``.
 
 
 ----
 ----
 
 
@@ -365,7 +377,7 @@ Returns the type of the input connection ``idx``.
 
 
 - :ref:`Color<class_Color>` **get_connection_output_color** **(** :ref:`int<class_int>` idx **)**
 - :ref:`Color<class_Color>` **get_connection_output_color** **(** :ref:`int<class_int>` idx **)**
 
 
-Returns the color of the output connection ``idx``.
+Returns the :ref:`Color<class_Color>` of the output connection ``idx``.
 
 
 ----
 ----
 
 
@@ -397,7 +409,7 @@ Returns the type of the output connection ``idx``.
 
 
 - :ref:`Color<class_Color>` **get_slot_color_left** **(** :ref:`int<class_int>` idx **)** |const|
 - :ref:`Color<class_Color>` **get_slot_color_left** **(** :ref:`int<class_int>` idx **)** |const|
 
 
-Returns the color set to ``idx`` left (input) slot.
+Returns the left (input) :ref:`Color<class_Color>` of the slot ``idx``.
 
 
 ----
 ----
 
 
@@ -405,7 +417,7 @@ Returns the color set to ``idx`` left (input) slot.
 
 
 - :ref:`Color<class_Color>` **get_slot_color_right** **(** :ref:`int<class_int>` idx **)** |const|
 - :ref:`Color<class_Color>` **get_slot_color_right** **(** :ref:`int<class_int>` idx **)** |const|
 
 
-Returns the color set to ``idx`` right (output) slot.
+Returns the right (output) :ref:`Color<class_Color>` of the slot ``idx``.
 
 
 ----
 ----
 
 
@@ -413,7 +425,7 @@ Returns the color set to ``idx`` right (output) slot.
 
 
 - :ref:`int<class_int>` **get_slot_type_left** **(** :ref:`int<class_int>` idx **)** |const|
 - :ref:`int<class_int>` **get_slot_type_left** **(** :ref:`int<class_int>` idx **)** |const|
 
 
-Returns the (integer) type of left (input) ``idx`` slot.
+Returns the left (input) type of the slot ``idx``.
 
 
 ----
 ----
 
 
@@ -421,7 +433,7 @@ Returns the (integer) type of left (input) ``idx`` slot.
 
 
 - :ref:`int<class_int>` **get_slot_type_right** **(** :ref:`int<class_int>` idx **)** |const|
 - :ref:`int<class_int>` **get_slot_type_right** **(** :ref:`int<class_int>` idx **)** |const|
 
 
-Returns the (integer) type of right (output) ``idx`` slot.
+Returns the right (output) type of the slot ``idx``.
 
 
 ----
 ----
 
 
@@ -429,7 +441,7 @@ Returns the (integer) type of right (output) ``idx`` slot.
 
 
 - :ref:`bool<class_bool>` **is_slot_enabled_left** **(** :ref:`int<class_int>` idx **)** |const|
 - :ref:`bool<class_bool>` **is_slot_enabled_left** **(** :ref:`int<class_int>` idx **)** |const|
 
 
-Returns ``true`` if left (input) slot ``idx`` is enabled, ``false`` otherwise.
+Returns ``true`` if left (input) side of the slot ``idx`` is enabled.
 
 
 ----
 ----
 
 
@@ -437,7 +449,7 @@ Returns ``true`` if left (input) slot ``idx`` is enabled, ``false`` otherwise.
 
 
 - :ref:`bool<class_bool>` **is_slot_enabled_right** **(** :ref:`int<class_int>` idx **)** |const|
 - :ref:`bool<class_bool>` **is_slot_enabled_right** **(** :ref:`int<class_int>` idx **)** |const|
 
 
-Returns ``true`` if right (output) slot ``idx`` is enabled, ``false`` otherwise.
+Returns ``true`` if right (output) side of the slot ``idx`` is enabled.
 
 
 ----
 ----
 
 
@@ -457,6 +469,56 @@ If ``enable_left``/``right``, a port will appear and the slot will be able to be
 
 
 **Note:** This method only sets properties of the slot. To create the slot, add a :ref:`Control<class_Control>`-derived child to the GraphNode.
 **Note:** This method only sets properties of the slot. To create the slot, add a :ref:`Control<class_Control>`-derived child to the GraphNode.
 
 
+Individual properties can be set using one of the ``set_slot_*`` methods. You must enable at least one side of the slot to do so.
+
+----
+
+.. _class_GraphNode_method_set_slot_color_left:
+
+- void **set_slot_color_left** **(** :ref:`int<class_int>` idx, :ref:`Color<class_Color>` color_left **)**
+
+Sets the :ref:`Color<class_Color>` of the left (input) side of the slot ``idx`` to ``color_left``.
+
+----
+
+.. _class_GraphNode_method_set_slot_color_right:
+
+- void **set_slot_color_right** **(** :ref:`int<class_int>` idx, :ref:`Color<class_Color>` color_right **)**
+
+Sets the :ref:`Color<class_Color>` of the right (output) side of the slot ``idx`` to ``color_right``.
+
+----
+
+.. _class_GraphNode_method_set_slot_enabled_left:
+
+- void **set_slot_enabled_left** **(** :ref:`int<class_int>` idx, :ref:`bool<class_bool>` enable_left **)**
+
+Toggles the left (input) side of the slot ``idx``. If ``enable_left`` is ``true``, a port will appear on the left side and the slot will be able to be connected from this side.
+
+----
+
+.. _class_GraphNode_method_set_slot_enabled_right:
+
+- void **set_slot_enabled_right** **(** :ref:`int<class_int>` idx, :ref:`bool<class_bool>` enable_right **)**
+
+Toggles the right (output) side of the slot ``idx``. If ``enable_right`` is ``true``, a port will appear on the right side and the slot will be able to be connected from this side.
+
+----
+
+.. _class_GraphNode_method_set_slot_type_left:
+
+- void **set_slot_type_left** **(** :ref:`int<class_int>` idx, :ref:`int<class_int>` type_left **)**
+
+Sets the left (input) type of the slot ``idx`` to ``type_left``.
+
+----
+
+.. _class_GraphNode_method_set_slot_type_right:
+
+- void **set_slot_type_right** **(** :ref:`int<class_int>` idx, :ref:`int<class_int>` type_right **)**
+
+Sets the right (output) type of the slot ``idx`` to ``type_right``.
+
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |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.)`
 .. |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.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`

+ 2 - 0
classes/class_hboxcontainer.rst

@@ -11,6 +11,8 @@ HBoxContainer
 
 
 **Inherits:** :ref:`BoxContainer<class_BoxContainer>` **<** :ref:`Container<class_Container>` **<** :ref:`Control<class_Control>` **<** :ref:`CanvasItem<class_CanvasItem>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 **Inherits:** :ref:`BoxContainer<class_BoxContainer>` **<** :ref:`Container<class_Container>` **<** :ref:`Control<class_Control>` **<** :ref:`CanvasItem<class_CanvasItem>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
 
+**Inherited By:** :ref:`EditorResourcePicker<class_EditorResourcePicker>`
+
 Horizontal box container.
 Horizontal box container.
 
 
 Description
 Description

+ 1 - 1
classes/class_heightmapshape.rst

@@ -11,7 +11,7 @@ HeightMapShape
 
 
 **Inherits:** :ref:`Shape<class_Shape>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
 **Inherits:** :ref:`Shape<class_Shape>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
 
 
-Height map shape for 3D physics (Bullet only).
+Height map shape for 3D physics.
 
 
 Description
 Description
 -----------
 -----------

+ 106 - 0
classes/class_hmaccontext.rst

@@ -0,0 +1,106 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the HMACContext.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_HMACContext:
+
+HMACContext
+===========
+
+**Inherits:** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+
+Used to create an HMAC for a message using a key.
+
+Description
+-----------
+
+The HMACContext class is useful for advanced HMAC use cases, such as streaming the message as it supports creating the message over time rather than providing it all at once.
+
+::
+
+    extends Node
+    var ctx = HMACContext.new()
+    
+    func _ready():
+        var key = "supersecret".to_utf8()
+        var err = ctx.start(HashingContext.HASH_SHA256, key)
+        assert(err == OK)
+        var msg1 = "this is ".to_utf8()
+        var msg2 = "vewy vewy secret".to_utf8()
+        err = ctx.update(msg1)
+        assert(err == OK)
+        err = ctx.update(msg2)
+        assert(err == OK)
+        var hmac = ctx.finish()
+        print(hmac.hex_encode())
+
+And in C# we can use the following.
+
+::
+
+    using Godot;
+    using System;
+    using System.Diagnostics;
+    
+    public class CryptoNode : Node
+    {
+        private HMACContext ctx = new HMACContext();
+        public override void _Ready()
+        {
+            PoolByteArray key = String("supersecret").to_utf8();
+            Error err = ctx.Start(HashingContext.HASH_SHA256, key);
+            GD.Assert(err == OK);
+            PoolByteArray msg1 = String("this is ").to_utf8();
+            PoolByteArray msg2 = String("vewy vew secret").to_utf8();
+            err = ctx.Update(msg1);
+            GD.Assert(err == OK);
+            err = ctx.Update(msg2);
+            GD.Assert(err == OK);
+            PoolByteArray hmac = ctx.Finish();
+            GD.Print(hmac.HexEncode());
+        }
+    }
+
+**Note:** Not available in HTML5 exports.
+
+Methods
+-------
+
++-------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PoolByteArray<class_PoolByteArray>` | :ref:`finish<class_HMACContext_method_finish>` **(** **)**                                                                                                      |
++-------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Error<enum_@GlobalScope_Error>`     | :ref:`start<class_HMACContext_method_start>` **(** :ref:`HashType<enum_HashingContext_HashType>` hash_type, :ref:`PoolByteArray<class_PoolByteArray>` key **)** |
++-------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Error<enum_@GlobalScope_Error>`     | :ref:`update<class_HMACContext_method_update>` **(** :ref:`PoolByteArray<class_PoolByteArray>` data **)**                                                       |
++-------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+Method Descriptions
+-------------------
+
+.. _class_HMACContext_method_finish:
+
+- :ref:`PoolByteArray<class_PoolByteArray>` **finish** **(** **)**
+
+Returns the resulting HMAC. If the HMAC failed, an empty :ref:`PoolByteArray<class_PoolByteArray>` is returned.
+
+----
+
+.. _class_HMACContext_method_start:
+
+- :ref:`Error<enum_@GlobalScope_Error>` **start** **(** :ref:`HashType<enum_HashingContext_HashType>` hash_type, :ref:`PoolByteArray<class_PoolByteArray>` key **)**
+
+Initializes the HMACContext. This method cannot be called again on the same HMACContext until :ref:`finish<class_HMACContext_method_finish>` has been called.
+
+----
+
+.. _class_HMACContext_method_update:
+
+- :ref:`Error<enum_@GlobalScope_Error>` **update** **(** :ref:`PoolByteArray<class_PoolByteArray>` data **)**
+
+Updates the message to be HMACed. This can be called multiple times before :ref:`finish<class_HMACContext_method_finish>` is called to append ``data`` to the message, but cannot be called until :ref:`start<class_HMACContext_method_start>` has been called.
+
+.. |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.)`

+ 65 - 17
classes/class_httprequest.rst

@@ -82,6 +82,14 @@ Can be used to make HTTP requests, i.e. download or upload files or web content
         add_child(texture_rect)
         add_child(texture_rect)
         texture_rect.texture = texture
         texture_rect.texture = texture
 
 
+**Gzipped response bodies**
+
+HttpRequest will automatically handle decompression of response bodies.
+
+A "Accept-Encoding" header will be automatically added to each of your requests, unless one is already specified.
+
+Any response with a "Content-Encoding: gzip" header will automatically be decompressed and delivered to you as a uncompressed bytes.
+
 **Note:** When performing HTTP requests from a project exported to HTML5, keep in mind the remote server may not allow requests from foreign origins due to `CORS <https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS>`_. If you host the server in question, you should modify its backend to allow requests from foreign origins by adding the ``Access-Control-Allow-Origin: *`` HTTP header.
 **Note:** When performing HTTP requests from a project exported to HTML5, keep in mind the remote server may not allow requests from foreign origins due to `CORS <https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS>`_. If you host the server in question, you should modify its backend to allow requests from foreign origins by adding the ``Access-Control-Allow-Origin: *`` HTTP header.
 
 
 **Note:** SSL/TLS support is currently limited to TLS 1.0, TLS 1.1, and TLS 1.2. Attempting to connect to a TLS 1.3-only server will return an error.
 **Note:** SSL/TLS support is currently limited to TLS 1.0, TLS 1.1, and TLS 1.2. Attempting to connect to a TLS 1.3-only server will return an error.
@@ -96,6 +104,8 @@ Tutorials
 Properties
 Properties
 ----------
 ----------
 
 
++-----------------------------+----------------------------------------------------------------------------+-----------+
+| :ref:`bool<class_bool>`     | :ref:`accept_gzip<class_HTTPRequest_property_accept_gzip>`                 | ``true``  |
 +-----------------------------+----------------------------------------------------------------------------+-----------+
 +-----------------------------+----------------------------------------------------------------------------+-----------+
 | :ref:`int<class_int>`       | :ref:`body_size_limit<class_HTTPRequest_property_body_size_limit>`         | ``-1``    |
 | :ref:`int<class_int>`       | :ref:`body_size_limit<class_HTTPRequest_property_body_size_limit>`         | ``-1``    |
 +-----------------------------+----------------------------------------------------------------------------+-----------+
 +-----------------------------+----------------------------------------------------------------------------+-----------+
@@ -113,17 +123,19 @@ Properties
 Methods
 Methods
 -------
 -------
 
 
-+---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`cancel_request<class_HTTPRequest_method_cancel_request>` **(** **)**                                                                                                                                                                                                                                                    |
-+---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                 | :ref:`get_body_size<class_HTTPRequest_method_get_body_size>` **(** **)** |const|                                                                                                                                                                                                                                              |
-+---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                 | :ref:`get_downloaded_bytes<class_HTTPRequest_method_get_downloaded_bytes>` **(** **)** |const|                                                                                                                                                                                                                                |
-+---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Status<enum_HTTPClient_Status>` | :ref:`get_http_client_status<class_HTTPRequest_method_get_http_client_status>` **(** **)** |const|                                                                                                                                                                                                                            |
-+---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`request<class_HTTPRequest_method_request>` **(** :ref:`String<class_String>` url, :ref:`PoolStringArray<class_PoolStringArray>` custom_headers=PoolStringArray(  ), :ref:`bool<class_bool>` ssl_validate_domain=true, :ref:`Method<enum_HTTPClient_Method>` method=0, :ref:`String<class_String>` request_data="" **)** |
-+---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`cancel_request<class_HTTPRequest_method_cancel_request>` **(** **)**                                                                                                                                                                                                                                                                                             |
++---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                 | :ref:`get_body_size<class_HTTPRequest_method_get_body_size>` **(** **)** |const|                                                                                                                                                                                                                                                                                       |
++---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                 | :ref:`get_downloaded_bytes<class_HTTPRequest_method_get_downloaded_bytes>` **(** **)** |const|                                                                                                                                                                                                                                                                         |
++---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Status<enum_HTTPClient_Status>` | :ref:`get_http_client_status<class_HTTPRequest_method_get_http_client_status>` **(** **)** |const|                                                                                                                                                                                                                                                                     |
++---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`request<class_HTTPRequest_method_request>` **(** :ref:`String<class_String>` url, :ref:`PoolStringArray<class_PoolStringArray>` custom_headers=PoolStringArray(  ), :ref:`bool<class_bool>` ssl_validate_domain=true, :ref:`Method<enum_HTTPClient_Method>` method=0, :ref:`String<class_String>` request_data="" **)**                                          |
++---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`request_raw<class_HTTPRequest_method_request_raw>` **(** :ref:`String<class_String>` url, :ref:`PoolStringArray<class_PoolStringArray>` custom_headers=PoolStringArray(  ), :ref:`bool<class_bool>` ssl_validate_domain=true, :ref:`Method<enum_HTTPClient_Method>` method=0, :ref:`PoolByteArray<class_PoolByteArray>` request_data_raw=PoolByteArray(  ) **)** |
++---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 
 Signals
 Signals
 -------
 -------
@@ -153,6 +165,8 @@ Enumerations
 
 
 .. _class_HTTPRequest_constant_RESULT_NO_RESPONSE:
 .. _class_HTTPRequest_constant_RESULT_NO_RESPONSE:
 
 
+.. _class_HTTPRequest_constant_RESULT_BODY_DECOMPRESS_FAILED:
+
 .. _class_HTTPRequest_constant_RESULT_BODY_SIZE_LIMIT_EXCEEDED:
 .. _class_HTTPRequest_constant_RESULT_BODY_SIZE_LIMIT_EXCEEDED:
 
 
 .. _class_HTTPRequest_constant_RESULT_REQUEST_FAILED:
 .. _class_HTTPRequest_constant_RESULT_REQUEST_FAILED:
@@ -181,21 +195,45 @@ enum **Result**:
 
 
 - **RESULT_NO_RESPONSE** = **6** --- Request does not have a response (yet).
 - **RESULT_NO_RESPONSE** = **6** --- Request does not have a response (yet).
 
 
+- **RESULT_BODY_DECOMPRESS_FAILED** = **8**
+
 - **RESULT_BODY_SIZE_LIMIT_EXCEEDED** = **7** --- Request exceeded its maximum size limit, see :ref:`body_size_limit<class_HTTPRequest_property_body_size_limit>`.
 - **RESULT_BODY_SIZE_LIMIT_EXCEEDED** = **7** --- Request exceeded its maximum size limit, see :ref:`body_size_limit<class_HTTPRequest_property_body_size_limit>`.
 
 
-- **RESULT_REQUEST_FAILED** = **8** --- Request failed (currently unused).
+- **RESULT_REQUEST_FAILED** = **9** --- Request failed (currently unused).
 
 
-- **RESULT_DOWNLOAD_FILE_CANT_OPEN** = **9** --- HTTPRequest couldn't open the download file.
+- **RESULT_DOWNLOAD_FILE_CANT_OPEN** = **10** --- HTTPRequest couldn't open the download file.
 
 
-- **RESULT_DOWNLOAD_FILE_WRITE_ERROR** = **10** --- HTTPRequest couldn't write to the download file.
+- **RESULT_DOWNLOAD_FILE_WRITE_ERROR** = **11** --- HTTPRequest couldn't write to the download file.
 
 
-- **RESULT_REDIRECT_LIMIT_REACHED** = **11** --- Request reached its maximum redirect limit, see :ref:`max_redirects<class_HTTPRequest_property_max_redirects>`.
+- **RESULT_REDIRECT_LIMIT_REACHED** = **12** --- Request reached its maximum redirect limit, see :ref:`max_redirects<class_HTTPRequest_property_max_redirects>`.
 
 
-- **RESULT_TIMEOUT** = **12**
+- **RESULT_TIMEOUT** = **13**
 
 
 Property Descriptions
 Property Descriptions
 ---------------------
 ---------------------
 
 
+.. _class_HTTPRequest_property_accept_gzip:
+
+- :ref:`bool<class_bool>` **accept_gzip**
+
++-----------+------------------------+
+| *Default* | ``true``               |
++-----------+------------------------+
+| *Setter*  | set_accept_gzip(value) |
++-----------+------------------------+
+| *Getter*  | is_accepting_gzip()    |
++-----------+------------------------+
+
+If ``true``, this header will be added to each request: ``Accept-Encoding: gzip, deflate`` telling servers that it's okay to compress response bodies.
+
+Any Reponse body declaring a ``Content-Encoding`` of either ``gzip`` or ``deflate`` will then be automatically decompressed, and the uncompressed bytes will be delivered via ``request_completed``.
+
+If the user has specified their own ``Accept-Encoding`` header, then no header will be added regaurdless of ``accept_gzip``.
+
+If ``false`` no header will be added, and no decompression will be performed on response bodies. The raw bytes of the response body will be returned via ``request_completed``.
+
+----
+
 .. _class_HTTPRequest_property_body_size_limit:
 .. _class_HTTPRequest_property_body_size_limit:
 
 
 - :ref:`int<class_int>` **body_size_limit**
 - :ref:`int<class_int>` **body_size_limit**
@@ -208,7 +246,7 @@ Property Descriptions
 | *Getter*  | get_body_size_limit()      |
 | *Getter*  | get_body_size_limit()      |
 +-----------+----------------------------+
 +-----------+----------------------------+
 
 
-Maximum allowed size for response bodies.
+Maximum allowed size for response bodies. If the response body is compressed, this will be used as the maximum allowed size for the decompressed body.
 
 
 ----
 ----
 
 
@@ -337,6 +375,16 @@ Returns :ref:`@GlobalScope.OK<class_@GlobalScope_constant_OK>` if request is suc
 
 
 **Note:** The ``request_data`` parameter is ignored if ``method`` is :ref:`HTTPClient.METHOD_GET<class_HTTPClient_constant_METHOD_GET>`. This is because GET methods can't contain request data. As a workaround, you can pass request data as a query string in the URL. See :ref:`String.http_escape<class_String_method_http_escape>` for an example.
 **Note:** The ``request_data`` parameter is ignored if ``method`` is :ref:`HTTPClient.METHOD_GET<class_HTTPClient_constant_METHOD_GET>`. This is because GET methods can't contain request data. As a workaround, you can pass request data as a query string in the URL. See :ref:`String.http_escape<class_String_method_http_escape>` for an example.
 
 
+----
+
+.. _class_HTTPRequest_method_request_raw:
+
+- :ref:`Error<enum_@GlobalScope_Error>` **request_raw** **(** :ref:`String<class_String>` url, :ref:`PoolStringArray<class_PoolStringArray>` custom_headers=PoolStringArray(  ), :ref:`bool<class_bool>` ssl_validate_domain=true, :ref:`Method<enum_HTTPClient_Method>` method=0, :ref:`PoolByteArray<class_PoolByteArray>` request_data_raw=PoolByteArray(  ) **)**
+
+Creates request on the underlying :ref:`HTTPClient<class_HTTPClient>` using a raw array of bytes for the request body. If there is no configuration errors, it tries to connect using :ref:`HTTPClient.connect_to_host<class_HTTPClient_method_connect_to_host>` and passes parameters onto :ref:`HTTPClient.request<class_HTTPClient_method_request>`.
+
+Returns :ref:`@GlobalScope.OK<class_@GlobalScope_constant_OK>` if request is successfully created. (Does not imply that the server has responded), :ref:`@GlobalScope.ERR_UNCONFIGURED<class_@GlobalScope_constant_ERR_UNCONFIGURED>` if not in the tree, :ref:`@GlobalScope.ERR_BUSY<class_@GlobalScope_constant_ERR_BUSY>` if still processing previous request, :ref:`@GlobalScope.ERR_INVALID_PARAMETER<class_@GlobalScope_constant_ERR_INVALID_PARAMETER>` if given string is not a valid URL format, or :ref:`@GlobalScope.ERR_CANT_CONNECT<class_@GlobalScope_constant_ERR_CANT_CONNECT>` if not using thread and the :ref:`HTTPClient<class_HTTPClient>` cannot connect to host.
+
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |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.)`
 .. |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.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`

+ 2 - 2
classes/class_image.rst

@@ -350,7 +350,7 @@ enum **Interpolation**:
 
 
 - **INTERPOLATE_TRILINEAR** = **3** --- Performs bilinear separately on the two most-suited mipmap levels, then linearly interpolates between them.
 - **INTERPOLATE_TRILINEAR** = **3** --- Performs bilinear separately on the two most-suited mipmap levels, then linearly interpolates between them.
 
 
-It's slower than :ref:`INTERPOLATE_BILINEAR<class_Image_constant_INTERPOLATE_BILINEAR>`, but produces higher-quality results with much less aliasing artifacts.
+It's slower than :ref:`INTERPOLATE_BILINEAR<class_Image_constant_INTERPOLATE_BILINEAR>`, but produces higher-quality results with far fewer aliasing artifacts.
 
 
 If the image does not have mipmaps, they will be generated and used internally, but no mipmaps will be generated on the resulting image.
 If the image does not have mipmaps, they will be generated and used internally, but no mipmaps will be generated on the resulting image.
 
 
@@ -605,7 +605,7 @@ Flips the image vertically.
 
 
 - :ref:`Error<enum_@GlobalScope_Error>` **generate_mipmaps** **(** :ref:`bool<class_bool>` renormalize=false **)**
 - :ref:`Error<enum_@GlobalScope_Error>` **generate_mipmaps** **(** :ref:`bool<class_bool>` renormalize=false **)**
 
 
-Generates mipmaps for the image. Mipmaps are precalculated and lower resolution copies of the image. Mipmaps are automatically used if the image needs to be scaled down when rendered. This improves image quality and the performance of the rendering. Returns an error if the image is compressed, in a custom format or if the image's width/height is 0.
+Generates mipmaps for the image. Mipmaps are precalculated lower-resolution copies of the image that are automatically used if the image needs to be scaled down when rendered. They help improve image quality and performance when rendering. This method returns an error if the image is compressed, in a custom format, or if the image's width/height is ``0``.
 
 
 ----
 ----
 
 

+ 1 - 1
classes/class_immediategeometry.rst

@@ -9,7 +9,7 @@
 ImmediateGeometry
 ImmediateGeometry
 =================
 =================
 
 
-**Inherits:** :ref:`GeometryInstance<class_GeometryInstance>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`GeometryInstance<class_GeometryInstance>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`CullInstance<class_CullInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
 
 Draws simple geometry from code.
 Draws simple geometry from code.
 
 

+ 45 - 13
classes/class_inputeventkey.rst

@@ -26,22 +26,26 @@ Tutorials
 Properties
 Properties
 ----------
 ----------
 
 
-+-------------------------+--------------------------------------------------------+-----------+
-| :ref:`bool<class_bool>` | :ref:`echo<class_InputEventKey_property_echo>`         | ``false`` |
-+-------------------------+--------------------------------------------------------+-----------+
-| :ref:`bool<class_bool>` | :ref:`pressed<class_InputEventKey_property_pressed>`   | ``false`` |
-+-------------------------+--------------------------------------------------------+-----------+
-| :ref:`int<class_int>`   | :ref:`scancode<class_InputEventKey_property_scancode>` | ``0``     |
-+-------------------------+--------------------------------------------------------+-----------+
-| :ref:`int<class_int>`   | :ref:`unicode<class_InputEventKey_property_unicode>`   | ``0``     |
-+-------------------------+--------------------------------------------------------+-----------+
++-------------------------+--------------------------------------------------------------------------+-----------+
+| :ref:`bool<class_bool>` | :ref:`echo<class_InputEventKey_property_echo>`                           | ``false`` |
++-------------------------+--------------------------------------------------------------------------+-----------+
+| :ref:`int<class_int>`   | :ref:`physical_scancode<class_InputEventKey_property_physical_scancode>` | ``0``     |
++-------------------------+--------------------------------------------------------------------------+-----------+
+| :ref:`bool<class_bool>` | :ref:`pressed<class_InputEventKey_property_pressed>`                     | ``false`` |
++-------------------------+--------------------------------------------------------------------------+-----------+
+| :ref:`int<class_int>`   | :ref:`scancode<class_InputEventKey_property_scancode>`                   | ``0``     |
++-------------------------+--------------------------------------------------------------------------+-----------+
+| :ref:`int<class_int>`   | :ref:`unicode<class_InputEventKey_property_unicode>`                     | ``0``     |
++-------------------------+--------------------------------------------------------------------------+-----------+
 
 
 Methods
 Methods
 -------
 -------
 
 
-+-----------------------+----------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>` | :ref:`get_scancode_with_modifiers<class_InputEventKey_method_get_scancode_with_modifiers>` **(** **)** |const| |
-+-----------------------+----------------------------------------------------------------------------------------------------------------+
++-----------------------+----------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>` | :ref:`get_physical_scancode_with_modifiers<class_InputEventKey_method_get_physical_scancode_with_modifiers>` **(** **)** |const| |
++-----------------------+----------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>` | :ref:`get_scancode_with_modifiers<class_InputEventKey_method_get_scancode_with_modifiers>` **(** **)** |const|                   |
++-----------------------+----------------------------------------------------------------------------------------------------------------------------------+
 
 
 Property Descriptions
 Property Descriptions
 ---------------------
 ---------------------
@@ -62,6 +66,24 @@ If ``true``, the key was already pressed before this event. It means the user is
 
 
 ----
 ----
 
 
+.. _class_InputEventKey_property_physical_scancode:
+
+- :ref:`int<class_int>` **physical_scancode**
+
++-----------+------------------------------+
+| *Default* | ``0``                        |
++-----------+------------------------------+
+| *Setter*  | set_physical_scancode(value) |
++-----------+------------------------------+
+| *Getter*  | get_physical_scancode()      |
++-----------+------------------------------+
+
+Key physical scancode, which corresponds to one of the :ref:`KeyList<enum_@GlobalScope_KeyList>` constants. Represent the physical location of a key on the 101/102-key US QWERTY keyboard.
+
+To get a human-readable representation of the ``InputEventKey``, use ``OS.get_scancode_string(event.physical_scancode)`` where ``event`` is the ``InputEventKey``.
+
+----
+
 .. _class_InputEventKey_property_pressed:
 .. _class_InputEventKey_property_pressed:
 
 
 - :ref:`bool<class_bool>` **pressed**
 - :ref:`bool<class_bool>` **pressed**
@@ -90,7 +112,7 @@ If ``true``, the key's state is pressed. If ``false``, the key's state is releas
 | *Getter*  | get_scancode()      |
 | *Getter*  | get_scancode()      |
 +-----------+---------------------+
 +-----------+---------------------+
 
 
-The key scancode, which corresponds to one of the :ref:`KeyList<enum_@GlobalScope_KeyList>` constants.
+The key scancode, which corresponds to one of the :ref:`KeyList<enum_@GlobalScope_KeyList>` constants. Represent key in the current keyboard layout.
 
 
 To get a human-readable representation of the ``InputEventKey``, use ``OS.get_scancode_string(event.scancode)`` where ``event`` is the ``InputEventKey``.
 To get a human-readable representation of the ``InputEventKey``, use ``OS.get_scancode_string(event.scancode)`` where ``event`` is the ``InputEventKey``.
 
 
@@ -113,6 +135,16 @@ The key Unicode identifier (when relevant). Unicode identifiers for the composit
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
 
 
+.. _class_InputEventKey_method_get_physical_scancode_with_modifiers:
+
+- :ref:`int<class_int>` **get_physical_scancode_with_modifiers** **(** **)** |const|
+
+Returns the physical scancode combined with modifier keys such as ``Shift`` or ``Alt``. See also :ref:`InputEventWithModifiers<class_InputEventWithModifiers>`.
+
+To get a human-readable representation of the ``InputEventKey`` with modifiers, use ``OS.get_scancode_string(event.get_physical_scancode_with_modifiers())`` where ``event`` is the ``InputEventKey``.
+
+----
+
 .. _class_InputEventKey_method_get_scancode_with_modifiers:
 .. _class_InputEventKey_method_get_scancode_with_modifiers:
 
 
 - :ref:`int<class_int>` **get_scancode_with_modifiers** **(** **)** |const|
 - :ref:`int<class_int>` **get_scancode_with_modifiers** **(** **)** |const|

+ 20 - 0
classes/class_ip.rst

@@ -32,10 +32,14 @@ Methods
 +-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`String<class_String>`                   | :ref:`get_resolve_item_address<class_IP_method_get_resolve_item_address>` **(** :ref:`int<class_int>` id **)** |const|                                            |
 | :ref:`String<class_String>`                   | :ref:`get_resolve_item_address<class_IP_method_get_resolve_item_address>` **(** :ref:`int<class_int>` id **)** |const|                                            |
 +-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                     | :ref:`get_resolve_item_addresses<class_IP_method_get_resolve_item_addresses>` **(** :ref:`int<class_int>` id **)** |const|                                        |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`ResolverStatus<enum_IP_ResolverStatus>` | :ref:`get_resolve_item_status<class_IP_method_get_resolve_item_status>` **(** :ref:`int<class_int>` id **)** |const|                                              |
 | :ref:`ResolverStatus<enum_IP_ResolverStatus>` | :ref:`get_resolve_item_status<class_IP_method_get_resolve_item_status>` **(** :ref:`int<class_int>` id **)** |const|                                              |
 +-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`String<class_String>`                   | :ref:`resolve_hostname<class_IP_method_resolve_hostname>` **(** :ref:`String<class_String>` host, :ref:`Type<enum_IP_Type>` ip_type=3 **)**                       |
 | :ref:`String<class_String>`                   | :ref:`resolve_hostname<class_IP_method_resolve_hostname>` **(** :ref:`String<class_String>` host, :ref:`Type<enum_IP_Type>` ip_type=3 **)**                       |
 +-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                     | :ref:`resolve_hostname_addresses<class_IP_method_resolve_hostname_addresses>` **(** :ref:`String<class_String>` host, :ref:`Type<enum_IP_Type>` ip_type=3 **)**   |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                         | :ref:`resolve_hostname_queue_item<class_IP_method_resolve_hostname_queue_item>` **(** :ref:`String<class_String>` host, :ref:`Type<enum_IP_Type>` ip_type=3 **)** |
 | :ref:`int<class_int>`                         | :ref:`resolve_hostname_queue_item<class_IP_method_resolve_hostname_queue_item>` **(** :ref:`String<class_String>` host, :ref:`Type<enum_IP_Type>` ip_type=3 **)** |
 +-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 
@@ -149,6 +153,14 @@ Returns a queued hostname's IP address, given its queue ``id``. Returns an empty
 
 
 ----
 ----
 
 
+.. _class_IP_method_get_resolve_item_addresses:
+
+- :ref:`Array<class_Array>` **get_resolve_item_addresses** **(** :ref:`int<class_int>` id **)** |const|
+
+Return resolved addresses, or an empty array if an error happened or resolution didn't happen yet (see :ref:`get_resolve_item_status<class_IP_method_get_resolve_item_status>`).
+
+----
+
 .. _class_IP_method_get_resolve_item_status:
 .. _class_IP_method_get_resolve_item_status:
 
 
 - :ref:`ResolverStatus<enum_IP_ResolverStatus>` **get_resolve_item_status** **(** :ref:`int<class_int>` id **)** |const|
 - :ref:`ResolverStatus<enum_IP_ResolverStatus>` **get_resolve_item_status** **(** :ref:`int<class_int>` id **)** |const|
@@ -165,6 +177,14 @@ Returns a given hostname's IPv4 or IPv6 address when resolved (blocking-type met
 
 
 ----
 ----
 
 
+.. _class_IP_method_resolve_hostname_addresses:
+
+- :ref:`Array<class_Array>` **resolve_hostname_addresses** **(** :ref:`String<class_String>` host, :ref:`Type<enum_IP_Type>` ip_type=3 **)**
+
+Resolves a given hostname in a blocking way. Addresses are returned as an :ref:`Array<class_Array>` of IPv4 or IPv6 depending on ``ip_type``.
+
+----
+
 .. _class_IP_method_resolve_hostname_queue_item:
 .. _class_IP_method_resolve_hostname_queue_item:
 
 
 - :ref:`int<class_int>` **resolve_hostname_queue_item** **(** :ref:`String<class_String>` host, :ref:`Type<enum_IP_Type>` ip_type=3 **)**
 - :ref:`int<class_int>` **resolve_hostname_queue_item** **(** :ref:`String<class_String>` host, :ref:`Type<enum_IP_Type>` ip_type=3 **)**

+ 49 - 3
classes/class_javascript.rst

@@ -28,13 +28,51 @@ Tutorials
 Methods
 Methods
 -------
 -------
 
 
-+-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Variant<class_Variant>` | :ref:`eval<class_JavaScript_method_eval>` **(** :ref:`String<class_String>` code, :ref:`bool<class_bool>` use_global_execution_context=false **)** |
-+-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`JavaScriptObject<class_JavaScriptObject>` | :ref:`create_callback<class_JavaScript_method_create_callback>` **(** :ref:`Object<class_Object>` object, :ref:`String<class_String>` method **)**                                                                          |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Variant<class_Variant>`                   | :ref:`create_object<class_JavaScript_method_create_object>` **(** :ref:`String<class_String>` object, ... **)** |vararg|                                                                                                    |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`download_buffer<class_JavaScript_method_download_buffer>` **(** :ref:`PoolByteArray<class_PoolByteArray>` buffer, :ref:`String<class_String>` name, :ref:`String<class_String>` mime="application/octet-stream" **)** |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Variant<class_Variant>`                   | :ref:`eval<class_JavaScript_method_eval>` **(** :ref:`String<class_String>` code, :ref:`bool<class_bool>` use_global_execution_context=false **)**                                                                          |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`JavaScriptObject<class_JavaScriptObject>` | :ref:`get_interface<class_JavaScript_method_get_interface>` **(** :ref:`String<class_String>` interface **)**                                                                                                               |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
 
 
+.. _class_JavaScript_method_create_callback:
+
+- :ref:`JavaScriptObject<class_JavaScriptObject>` **create_callback** **(** :ref:`Object<class_Object>` object, :ref:`String<class_String>` method **)**
+
+Creates a reference to a script function that can be used as a callback by JavaScript. The reference must be kept until the callback happens, or it won't be called at all. See :ref:`JavaScriptObject<class_JavaScriptObject>` for usage.
+
+----
+
+.. _class_JavaScript_method_create_object:
+
+- :ref:`Variant<class_Variant>` **create_object** **(** :ref:`String<class_String>` object, ... **)** |vararg|
+
+Creates a new JavaScript object using the ``new`` constructor. The ``object`` must a valid property of the JavaScript ``window``. See :ref:`JavaScriptObject<class_JavaScriptObject>` for usage.
+
+----
+
+.. _class_JavaScript_method_download_buffer:
+
+- void **download_buffer** **(** :ref:`PoolByteArray<class_PoolByteArray>` buffer, :ref:`String<class_String>` name, :ref:`String<class_String>` mime="application/octet-stream" **)**
+
+Prompts the user to download a file containing the specified ``buffer``. The file will have the given ``name`` and ``mime`` type.
+
+**Note:** The browser may override the `MIME type <https://en.wikipedia.org/wiki/Media_type>`_ provided based on the file ``name``'s extension.
+
+**Note:** Browsers might block the download if :ref:`download_buffer<class_JavaScript_method_download_buffer>` is not being called from a user interaction (e.g. button click).
+
+**Note:** Browsers might ask the user for permission or block the download if multiple download requests are made in a quick succession.
+
+----
+
 .. _class_JavaScript_method_eval:
 .. _class_JavaScript_method_eval:
 
 
 - :ref:`Variant<class_Variant>` **eval** **(** :ref:`String<class_String>` code, :ref:`bool<class_bool>` use_global_execution_context=false **)**
 - :ref:`Variant<class_Variant>` **eval** **(** :ref:`String<class_String>` code, :ref:`bool<class_bool>` use_global_execution_context=false **)**
@@ -43,6 +81,14 @@ Execute the string ``code`` as JavaScript code within the browser window. This i
 
 
 If ``use_global_execution_context`` is ``true``, the code will be evaluated in the global execution context. Otherwise, it is evaluated in the execution context of a function within the engine's runtime environment.
 If ``use_global_execution_context`` is ``true``, the code will be evaluated in the global execution context. Otherwise, it is evaluated in the execution context of a function within the engine's runtime environment.
 
 
+----
+
+.. _class_JavaScript_method_get_interface:
+
+- :ref:`JavaScriptObject<class_JavaScriptObject>` **get_interface** **(** :ref:`String<class_String>` interface **)**
+
+Returns an interface to a JavaScript object that can be used by scripts. The ``interface`` must be a valid property of the JavaScript ``window``. The callback must accept a single :ref:`Array<class_Array>` argument, which will contain the JavaScript ``arguments``. See :ref:`JavaScriptObject<class_JavaScriptObject>` for usage.
+
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |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.)`
 .. |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.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`

+ 53 - 0
classes/class_javascriptobject.rst

@@ -0,0 +1,53 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the JavaScriptObject.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_JavaScriptObject:
+
+JavaScriptObject
+================
+
+**Inherits:** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+
+A wrapper class for native JavaScript objects.
+
+Description
+-----------
+
+JavaScriptObject is used to interact with JavaScript objects retrieved or created via :ref:`JavaScript.get_interface<class_JavaScript_method_get_interface>`, :ref:`JavaScript.create_object<class_JavaScript_method_create_object>`, or :ref:`JavaScript.create_callback<class_JavaScript_method_create_callback>`.
+
+Example:
+
+::
+
+    extends Node
+    
+    var _my_js_callback = JavaScript.create_callback(self, "myCallback") # This reference must be kept
+    var console = JavaScript.get_interface("console")
+    
+    func _init():
+        var buf = JavaScript.create_object("ArrayBuffer", 10) # new ArrayBuffer(10)
+        print(buf) # prints [JavaScriptObject:OBJECT_ID]
+        var uint8arr = JavaScript.create_object("Uint8Array", buf) # new Uint8Array(buf)
+        uint8arr[1] = 255
+        prints(uint8arr[1], uint8arr.byteLength) # prints 255 10
+        console.log(uint8arr) # prints in browser console "Uint8Array(10) [ 0, 255, 0, 0, 0, 0, 0, 0, 0, 0 ]"
+    
+        # Equivalent of JavaScript: Array.from(uint8arr).forEach(myCallback)
+        JavaScript.get_interface("Array").from(uint8arr).forEach(_my_js_callback)
+    
+    func myCallback(args):
+        # Will be called with the parameters passed to the "forEach" callback
+        # [0, 0, [JavaScriptObject:1173]]
+        # [255, 1, [JavaScriptObject:1173]]
+        # ...
+        # [0, 9, [JavaScriptObject:1180]]
+        print(args)
+
+Note: Only available in the "HTML5" platform.
+
+.. |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.)`

+ 27 - 9
classes/class_kinematicbody.rst

@@ -38,15 +38,17 @@ Tutorials
 Properties
 Properties
 ----------
 ----------
 
 
-+---------------------------+----------------------------------------------------------------------------------+-----------+
-| :ref:`float<class_float>` | :ref:`collision/safe_margin<class_KinematicBody_property_collision/safe_margin>` | ``0.001`` |
-+---------------------------+----------------------------------------------------------------------------------+-----------+
-| :ref:`bool<class_bool>`   | :ref:`move_lock_x<class_KinematicBody_property_move_lock_x>`                     | ``false`` |
-+---------------------------+----------------------------------------------------------------------------------+-----------+
-| :ref:`bool<class_bool>`   | :ref:`move_lock_y<class_KinematicBody_property_move_lock_y>`                     | ``false`` |
-+---------------------------+----------------------------------------------------------------------------------+-----------+
-| :ref:`bool<class_bool>`   | :ref:`move_lock_z<class_KinematicBody_property_move_lock_z>`                     | ``false`` |
-+---------------------------+----------------------------------------------------------------------------------+-----------+
++---------------------------+------------------------------------------------------------------------------------+-----------+
+| :ref:`float<class_float>` | :ref:`collision/safe_margin<class_KinematicBody_property_collision/safe_margin>`   | ``0.001`` |
++---------------------------+------------------------------------------------------------------------------------+-----------+
+| :ref:`bool<class_bool>`   | :ref:`motion/sync_to_physics<class_KinematicBody_property_motion/sync_to_physics>` | ``false`` |
++---------------------------+------------------------------------------------------------------------------------+-----------+
+| :ref:`bool<class_bool>`   | :ref:`move_lock_x<class_KinematicBody_property_move_lock_x>`                       | ``false`` |
++---------------------------+------------------------------------------------------------------------------------+-----------+
+| :ref:`bool<class_bool>`   | :ref:`move_lock_y<class_KinematicBody_property_move_lock_y>`                       | ``false`` |
++---------------------------+------------------------------------------------------------------------------------+-----------+
+| :ref:`bool<class_bool>`   | :ref:`move_lock_z<class_KinematicBody_property_move_lock_z>`                       | ``false`` |
++---------------------------+------------------------------------------------------------------------------------+-----------+
 
 
 Methods
 Methods
 -------
 -------
@@ -104,6 +106,22 @@ A lower value forces the collision algorithm to use more exact detection, so it
 
 
 ----
 ----
 
 
+.. _class_KinematicBody_property_motion/sync_to_physics:
+
+- :ref:`bool<class_bool>` **motion/sync_to_physics**
+
++-----------+------------------------------+
+| *Default* | ``false``                    |
++-----------+------------------------------+
+| *Setter*  | set_sync_to_physics(value)   |
++-----------+------------------------------+
+| *Getter*  | is_sync_to_physics_enabled() |
++-----------+------------------------------+
+
+If ``true``, the body's movement will be synchronized to the physics frame. This is useful when animating movement via :ref:`AnimationPlayer<class_AnimationPlayer>`, for example on moving platforms. Do **not** use together with :ref:`move_and_slide<class_KinematicBody_method_move_and_slide>` or :ref:`move_and_collide<class_KinematicBody_method_move_and_collide>` functions.
+
+----
+
 .. _class_KinematicBody_property_move_lock_x:
 .. _class_KinematicBody_property_move_lock_x:
 
 
 - :ref:`bool<class_bool>` **move_lock_x**
 - :ref:`bool<class_bool>` **move_lock_x**

+ 1 - 1
classes/class_label.rst

@@ -16,7 +16,7 @@ Displays plain text in a line or wrapped inside a rectangle. For formatted text,
 Description
 Description
 -----------
 -----------
 
 
-Label displays plain text on the screen. It gives you control over the horizontal and vertical alignment, and can wrap the text inside the node's bounding rectangle. It doesn't support bold, italics or other formatting. For that, use :ref:`RichTextLabel<class_RichTextLabel>` instead.
+Label displays plain text on the screen. It gives you control over the horizontal and vertical alignment and can wrap the text inside the node's bounding rectangle. It doesn't support bold, italics, or other formatting. For that, use :ref:`RichTextLabel<class_RichTextLabel>` instead.
 
 
 **Note:** Contrarily to most other :ref:`Control<class_Control>`\ s, Label's :ref:`Control.mouse_filter<class_Control_property_mouse_filter>` defaults to :ref:`Control.MOUSE_FILTER_IGNORE<class_Control_constant_MOUSE_FILTER_IGNORE>` (i.e. it doesn't react to mouse input events). This implies that a label won't display any configured :ref:`Control.hint_tooltip<class_Control_property_hint_tooltip>`, unless you change its mouse filter.
 **Note:** Contrarily to most other :ref:`Control<class_Control>`\ s, Label's :ref:`Control.mouse_filter<class_Control_property_mouse_filter>` defaults to :ref:`Control.MOUSE_FILTER_IGNORE<class_Control_constant_MOUSE_FILTER_IGNORE>` (i.e. it doesn't react to mouse input events). This implies that a label won't display any configured :ref:`Control.hint_tooltip<class_Control_property_hint_tooltip>`, unless you change its mouse filter.
 
 

+ 37 - 15
classes/class_light.rst

@@ -9,7 +9,7 @@
 Light
 Light
 =====
 =====
 
 
-**Inherits:** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`CullInstance<class_CullInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
 
 **Inherited By:** :ref:`DirectionalLight<class_DirectionalLight>`, :ref:`OmniLight<class_OmniLight>`, :ref:`SpotLight<class_SpotLight>`
 **Inherited By:** :ref:`DirectionalLight<class_DirectionalLight>`, :ref:`OmniLight<class_OmniLight>`, :ref:`SpotLight<class_SpotLight>`
 
 
@@ -45,6 +45,8 @@ Properties
 +--------------------------------------+--------------------------------------------------------------------------------+-------------------------+
 +--------------------------------------+--------------------------------------------------------------------------------+-------------------------+
 | :ref:`bool<class_bool>`              | :ref:`light_negative<class_Light_property_light_negative>`                     | ``false``               |
 | :ref:`bool<class_bool>`              | :ref:`light_negative<class_Light_property_light_negative>`                     | ``false``               |
 +--------------------------------------+--------------------------------------------------------------------------------+-------------------------+
 +--------------------------------------+--------------------------------------------------------------------------------+-------------------------+
+| :ref:`float<class_float>`            | :ref:`light_size<class_Light_property_light_size>`                             | ``0.0``                 |
++--------------------------------------+--------------------------------------------------------------------------------+-------------------------+
 | :ref:`float<class_float>`            | :ref:`light_specular<class_Light_property_light_specular>`                     | ``0.5``                 |
 | :ref:`float<class_float>`            | :ref:`light_specular<class_Light_property_light_specular>`                     | ``0.5``                 |
 +--------------------------------------+--------------------------------------------------------------------------------+-------------------------+
 +--------------------------------------+--------------------------------------------------------------------------------+-------------------------+
 | :ref:`float<class_float>`            | :ref:`shadow_bias<class_Light_property_shadow_bias>`                           | ``0.15``                |
 | :ref:`float<class_float>`            | :ref:`shadow_bias<class_Light_property_shadow_bias>`                           | ``0.15``                |
@@ -76,6 +78,8 @@ Enumerations
 
 
 .. _class_Light_constant_PARAM_INDIRECT_ENERGY:
 .. _class_Light_constant_PARAM_INDIRECT_ENERGY:
 
 
+.. _class_Light_constant_PARAM_SIZE:
+
 .. _class_Light_constant_PARAM_SPECULAR:
 .. _class_Light_constant_PARAM_SPECULAR:
 
 
 .. _class_Light_constant_PARAM_RANGE:
 .. _class_Light_constant_PARAM_RANGE:
@@ -110,33 +114,35 @@ enum **Param**:
 
 
 - **PARAM_INDIRECT_ENERGY** = **1** --- Constant for accessing :ref:`light_indirect_energy<class_Light_property_light_indirect_energy>`.
 - **PARAM_INDIRECT_ENERGY** = **1** --- Constant for accessing :ref:`light_indirect_energy<class_Light_property_light_indirect_energy>`.
 
 
-- **PARAM_SPECULAR** = **2** --- Constant for accessing :ref:`light_specular<class_Light_property_light_specular>`.
+- **PARAM_SIZE** = **2** --- Constant for accessing :ref:`light_size<class_Light_property_light_size>`.
 
 
-- **PARAM_RANGE** = **3** --- Constant for accessing :ref:`OmniLight.omni_range<class_OmniLight_property_omni_range>` or :ref:`SpotLight.spot_range<class_SpotLight_property_spot_range>`.
+- **PARAM_SPECULAR** = **3** --- Constant for accessing :ref:`light_specular<class_Light_property_light_specular>`.
 
 
-- **PARAM_ATTENUATION** = **4** --- Constant for accessing :ref:`OmniLight.omni_attenuation<class_OmniLight_property_omni_attenuation>` or :ref:`SpotLight.spot_attenuation<class_SpotLight_property_spot_attenuation>`.
+- **PARAM_RANGE** = **4** --- Constant for accessing :ref:`OmniLight.omni_range<class_OmniLight_property_omni_range>` or :ref:`SpotLight.spot_range<class_SpotLight_property_spot_range>`.
 
 
-- **PARAM_SPOT_ANGLE** = **5** --- Constant for accessing :ref:`SpotLight.spot_angle<class_SpotLight_property_spot_angle>`.
+- **PARAM_ATTENUATION** = **5** --- Constant for accessing :ref:`OmniLight.omni_attenuation<class_OmniLight_property_omni_attenuation>` or :ref:`SpotLight.spot_attenuation<class_SpotLight_property_spot_attenuation>`.
 
 
-- **PARAM_SPOT_ATTENUATION** = **6** --- Constant for accessing :ref:`SpotLight.spot_angle_attenuation<class_SpotLight_property_spot_angle_attenuation>`.
+- **PARAM_SPOT_ANGLE** = **6** --- Constant for accessing :ref:`SpotLight.spot_angle<class_SpotLight_property_spot_angle>`.
 
 
-- **PARAM_CONTACT_SHADOW_SIZE** = **7** --- Constant for accessing :ref:`shadow_contact<class_Light_property_shadow_contact>`.
+- **PARAM_SPOT_ATTENUATION** = **7** --- Constant for accessing :ref:`SpotLight.spot_angle_attenuation<class_SpotLight_property_spot_angle_attenuation>`.
 
 
-- **PARAM_SHADOW_MAX_DISTANCE** = **8** --- Constant for accessing :ref:`DirectionalLight.directional_shadow_max_distance<class_DirectionalLight_property_directional_shadow_max_distance>`.
+- **PARAM_CONTACT_SHADOW_SIZE** = **8** --- Constant for accessing :ref:`shadow_contact<class_Light_property_shadow_contact>`.
 
 
-- **PARAM_SHADOW_SPLIT_1_OFFSET** = **9** --- Constant for accessing :ref:`DirectionalLight.directional_shadow_split_1<class_DirectionalLight_property_directional_shadow_split_1>`.
+- **PARAM_SHADOW_MAX_DISTANCE** = **9** --- Constant for accessing :ref:`DirectionalLight.directional_shadow_max_distance<class_DirectionalLight_property_directional_shadow_max_distance>`.
 
 
-- **PARAM_SHADOW_SPLIT_2_OFFSET** = **10** --- Constant for accessing :ref:`DirectionalLight.directional_shadow_split_2<class_DirectionalLight_property_directional_shadow_split_2>`.
+- **PARAM_SHADOW_SPLIT_1_OFFSET** = **10** --- Constant for accessing :ref:`DirectionalLight.directional_shadow_split_1<class_DirectionalLight_property_directional_shadow_split_1>`.
 
 
-- **PARAM_SHADOW_SPLIT_3_OFFSET** = **11** --- Constant for accessing :ref:`DirectionalLight.directional_shadow_split_3<class_DirectionalLight_property_directional_shadow_split_3>`.
+- **PARAM_SHADOW_SPLIT_2_OFFSET** = **11** --- Constant for accessing :ref:`DirectionalLight.directional_shadow_split_2<class_DirectionalLight_property_directional_shadow_split_2>`.
 
 
-- **PARAM_SHADOW_NORMAL_BIAS** = **12** --- Constant for accessing :ref:`DirectionalLight.directional_shadow_normal_bias<class_DirectionalLight_property_directional_shadow_normal_bias>`.
+- **PARAM_SHADOW_SPLIT_3_OFFSET** = **12** --- Constant for accessing :ref:`DirectionalLight.directional_shadow_split_3<class_DirectionalLight_property_directional_shadow_split_3>`.
 
 
-- **PARAM_SHADOW_BIAS** = **13** --- Constant for accessing :ref:`shadow_bias<class_Light_property_shadow_bias>`.
+- **PARAM_SHADOW_NORMAL_BIAS** = **13** --- Constant for accessing :ref:`DirectionalLight.directional_shadow_normal_bias<class_DirectionalLight_property_directional_shadow_normal_bias>`.
 
 
-- **PARAM_SHADOW_BIAS_SPLIT_SCALE** = **14** --- Constant for accessing :ref:`DirectionalLight.directional_shadow_bias_split_scale<class_DirectionalLight_property_directional_shadow_bias_split_scale>`.
+- **PARAM_SHADOW_BIAS** = **14** --- Constant for accessing :ref:`shadow_bias<class_Light_property_shadow_bias>`.
 
 
-- **PARAM_MAX** = **15** --- Represents the size of the :ref:`Param<enum_Light_Param>` enum.
+- **PARAM_SHADOW_BIAS_SPLIT_SCALE** = **15** --- Constant for accessing :ref:`DirectionalLight.directional_shadow_bias_split_scale<class_DirectionalLight_property_directional_shadow_bias_split_scale>`.
+
+- **PARAM_MAX** = **16** --- Represents the size of the :ref:`Param<enum_Light_Param>` enum.
 
 
 ----
 ----
 
 
@@ -275,6 +281,22 @@ If ``true``, the light's effect is reversed, darkening areas and casting bright
 
 
 ----
 ----
 
 
+.. _class_Light_property_light_size:
+
+- :ref:`float<class_float>` **light_size**
+
++-----------+------------------+
+| *Default* | ``0.0``          |
++-----------+------------------+
+| *Setter*  | set_param(value) |
++-----------+------------------+
+| *Getter*  | get_param()      |
++-----------+------------------+
+
+The size of the light in Godot units. Only considered in baked lightmaps and only if :ref:`light_bake_mode<class_Light_property_light_bake_mode>` is set to :ref:`BAKE_ALL<class_Light_constant_BAKE_ALL>`. Increasing this value will make the shadows appear blurrier. This can be used to simulate area lights to an extent.
+
+----
+
 .. _class_Light_property_light_specular:
 .. _class_Light_property_light_specular:
 
 
 - :ref:`float<class_float>` **light_specular**
 - :ref:`float<class_float>` **light_specular**

+ 16 - 2
classes/class_lineedit.rst

@@ -162,9 +162,9 @@ Signals
 
 
 .. _class_LineEdit_signal_text_change_rejected:
 .. _class_LineEdit_signal_text_change_rejected:
 
 
-- **text_change_rejected** **(** **)**
+- **text_change_rejected** **(** :ref:`String<class_String>` rejected_substring **)**
 
 
-Emitted when trying to append text that would overflow the :ref:`max_length<class_LineEdit_property_max_length>`.
+Emitted when appending text that overflows the :ref:`max_length<class_LineEdit_property_max_length>`. The appended text is truncated to fit :ref:`max_length<class_LineEdit_property_max_length>`, and the part that couldn't fit is passed as the ``rejected_substring`` argument.
 
 
 ----
 ----
 
 
@@ -390,6 +390,20 @@ If ``true``, the ``LineEdit`` width will increase to stay longer than the :ref:`
 
 
 Maximum amount of characters that can be entered inside the ``LineEdit``. If ``0``, there is no limit.
 Maximum amount of characters that can be entered inside the ``LineEdit``. If ``0``, there is no limit.
 
 
+When a limit is defined, characters that would exceed :ref:`max_length<class_LineEdit_property_max_length>` are truncated. This happens both for existing :ref:`text<class_LineEdit_property_text>` contents when setting the max length, or for new text inserted in the ``LineEdit``, including pasting. If any input text is truncated, the :ref:`text_change_rejected<class_LineEdit_signal_text_change_rejected>` signal is emitted with the truncated substring as parameter.
+
+**Example:**
+
+::
+
+    text = "Hello world"
+    max_length = 5
+    # `text` becomes "Hello".
+    max_length = 10
+    text += " goodbye"
+    # `text` becomes "Hello good".
+    # `text_change_rejected` is emitted with "bye" as parameter.
+
 ----
 ----
 
 
 .. _class_LineEdit_property_placeholder_alpha:
 .. _class_LineEdit_property_placeholder_alpha:

+ 28 - 24
classes/class_mesh.rst

@@ -41,29 +41,29 @@ Properties
 Methods
 Methods
 -------
 -------
 
 
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Shape<class_Shape>`                       | :ref:`create_convex_shape<class_Mesh_method_create_convex_shape>` **(** **)** |const|                                                                    |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Mesh<class_Mesh>`                         | :ref:`create_outline<class_Mesh_method_create_outline>` **(** :ref:`float<class_float>` margin **)** |const|                                             |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Shape<class_Shape>`                       | :ref:`create_trimesh_shape<class_Mesh_method_create_trimesh_shape>` **(** **)** |const|                                                                  |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`TriangleMesh<class_TriangleMesh>`         | :ref:`generate_triangle_mesh<class_Mesh_method_generate_triangle_mesh>` **(** **)** |const|                                                              |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`AABB<class_AABB>`                         | :ref:`get_aabb<class_Mesh_method_get_aabb>` **(** **)** |const|                                                                                          |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PoolVector3Array<class_PoolVector3Array>` | :ref:`get_faces<class_Mesh_method_get_faces>` **(** **)** |const|                                                                                        |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                           | :ref:`get_surface_count<class_Mesh_method_get_surface_count>` **(** **)** |const|                                                                        |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                       | :ref:`surface_get_arrays<class_Mesh_method_surface_get_arrays>` **(** :ref:`int<class_int>` surf_idx **)** |const|                                       |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                       | :ref:`surface_get_blend_shape_arrays<class_Mesh_method_surface_get_blend_shape_arrays>` **(** :ref:`int<class_int>` surf_idx **)** |const|               |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Material<class_Material>`                 | :ref:`surface_get_material<class_Mesh_method_surface_get_material>` **(** :ref:`int<class_int>` surf_idx **)** |const|                                   |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`surface_set_material<class_Mesh_method_surface_set_material>` **(** :ref:`int<class_int>` surf_idx, :ref:`Material<class_Material>` material **)** |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
++-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Shape<class_Shape>`                       | :ref:`create_convex_shape<class_Mesh_method_create_convex_shape>` **(** :ref:`bool<class_bool>` clean=true, :ref:`bool<class_bool>` simplify=false **)** |const| |
++-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Mesh<class_Mesh>`                         | :ref:`create_outline<class_Mesh_method_create_outline>` **(** :ref:`float<class_float>` margin **)** |const|                                                     |
++-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Shape<class_Shape>`                       | :ref:`create_trimesh_shape<class_Mesh_method_create_trimesh_shape>` **(** **)** |const|                                                                          |
++-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`TriangleMesh<class_TriangleMesh>`         | :ref:`generate_triangle_mesh<class_Mesh_method_generate_triangle_mesh>` **(** **)** |const|                                                                      |
++-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`AABB<class_AABB>`                         | :ref:`get_aabb<class_Mesh_method_get_aabb>` **(** **)** |const|                                                                                                  |
++-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PoolVector3Array<class_PoolVector3Array>` | :ref:`get_faces<class_Mesh_method_get_faces>` **(** **)** |const|                                                                                                |
++-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                           | :ref:`get_surface_count<class_Mesh_method_get_surface_count>` **(** **)** |const|                                                                                |
++-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                       | :ref:`surface_get_arrays<class_Mesh_method_surface_get_arrays>` **(** :ref:`int<class_int>` surf_idx **)** |const|                                               |
++-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                       | :ref:`surface_get_blend_shape_arrays<class_Mesh_method_surface_get_blend_shape_arrays>` **(** :ref:`int<class_int>` surf_idx **)** |const|                       |
++-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Material<class_Material>`                 | :ref:`surface_get_material<class_Mesh_method_surface_get_material>` **(** :ref:`int<class_int>` surf_idx **)** |const|                                           |
++-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`surface_set_material<class_Mesh_method_surface_set_material>` **(** :ref:`int<class_int>` surf_idx, :ref:`Material<class_Material>` material **)**         |
++-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 
 Enumerations
 Enumerations
 ------------
 ------------
@@ -276,10 +276,14 @@ Method Descriptions
 
 
 .. _class_Mesh_method_create_convex_shape:
 .. _class_Mesh_method_create_convex_shape:
 
 
-- :ref:`Shape<class_Shape>` **create_convex_shape** **(** **)** |const|
+- :ref:`Shape<class_Shape>` **create_convex_shape** **(** :ref:`bool<class_bool>` clean=true, :ref:`bool<class_bool>` simplify=false **)** |const|
 
 
 Calculate a :ref:`ConvexPolygonShape<class_ConvexPolygonShape>` from the mesh.
 Calculate a :ref:`ConvexPolygonShape<class_ConvexPolygonShape>` from the mesh.
 
 
+If ``clean`` is ``true`` (default), duplicate and interior vertices are removed automatically. You can set it to ``false`` to make the process faster if not needed.
+
+If ``simplify`` is ``true``, the geometry can be further simplified to reduce the amount of vertices. Disabled by default.
+
 ----
 ----
 
 
 .. _class_Mesh_method_create_outline:
 .. _class_Mesh_method_create_outline:

+ 31 - 17
classes/class_meshinstance.rst

@@ -9,7 +9,7 @@
 MeshInstance
 MeshInstance
 ============
 ============
 
 
-**Inherits:** :ref:`GeometryInstance<class_GeometryInstance>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`GeometryInstance<class_GeometryInstance>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`CullInstance<class_CullInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
 
 **Inherited By:** :ref:`SoftBody<class_SoftBody>`
 **Inherited By:** :ref:`SoftBody<class_SoftBody>`
 
 
@@ -47,21 +47,23 @@ Properties
 Methods
 Methods
 -------
 -------
 
 
-+---------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                            | :ref:`create_convex_collision<class_MeshInstance_method_create_convex_collision>` **(** **)**                                                                   |
-+---------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                            | :ref:`create_debug_tangents<class_MeshInstance_method_create_debug_tangents>` **(** **)**                                                                       |
-+---------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                            | :ref:`create_trimesh_collision<class_MeshInstance_method_create_trimesh_collision>` **(** **)**                                                                 |
-+---------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Material<class_Material>` | :ref:`get_active_material<class_MeshInstance_method_get_active_material>` **(** :ref:`int<class_int>` surface **)** |const|                                     |
-+---------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Material<class_Material>` | :ref:`get_surface_material<class_MeshInstance_method_get_surface_material>` **(** :ref:`int<class_int>` surface **)** |const|                                   |
-+---------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`           | :ref:`get_surface_material_count<class_MeshInstance_method_get_surface_material_count>` **(** **)** |const|                                                     |
-+---------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                            | :ref:`set_surface_material<class_MeshInstance_method_set_surface_material>` **(** :ref:`int<class_int>` surface, :ref:`Material<class_Material>` material **)** |
-+---------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
++---------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                            | :ref:`create_convex_collision<class_MeshInstance_method_create_convex_collision>` **(** :ref:`bool<class_bool>` clean=true, :ref:`bool<class_bool>` simplify=false **)** |
++---------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                            | :ref:`create_debug_tangents<class_MeshInstance_method_create_debug_tangents>` **(** **)**                                                                                |
++---------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                            | :ref:`create_multiple_convex_collisions<class_MeshInstance_method_create_multiple_convex_collisions>` **(** **)**                                                        |
++---------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                            | :ref:`create_trimesh_collision<class_MeshInstance_method_create_trimesh_collision>` **(** **)**                                                                          |
++---------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Material<class_Material>` | :ref:`get_active_material<class_MeshInstance_method_get_active_material>` **(** :ref:`int<class_int>` surface **)** |const|                                              |
++---------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Material<class_Material>` | :ref:`get_surface_material<class_MeshInstance_method_get_surface_material>` **(** :ref:`int<class_int>` surface **)** |const|                                            |
++---------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`           | :ref:`get_surface_material_count<class_MeshInstance_method_get_surface_material_count>` **(** **)** |const|                                                              |
++---------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                            | :ref:`set_surface_material<class_MeshInstance_method_set_surface_material>` **(** :ref:`int<class_int>` surface, :ref:`Material<class_Material>` material **)**          |
++---------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 
 Property Descriptions
 Property Descriptions
 ---------------------
 ---------------------
@@ -131,10 +133,14 @@ Method Descriptions
 
 
 .. _class_MeshInstance_method_create_convex_collision:
 .. _class_MeshInstance_method_create_convex_collision:
 
 
-- void **create_convex_collision** **(** **)**
+- void **create_convex_collision** **(** :ref:`bool<class_bool>` clean=true, :ref:`bool<class_bool>` simplify=false **)**
 
 
 This helper creates a :ref:`StaticBody<class_StaticBody>` child node with a :ref:`ConvexPolygonShape<class_ConvexPolygonShape>` collision shape calculated from the mesh geometry. It's mainly used for testing.
 This helper creates a :ref:`StaticBody<class_StaticBody>` child node with a :ref:`ConvexPolygonShape<class_ConvexPolygonShape>` collision shape calculated from the mesh geometry. It's mainly used for testing.
 
 
+If ``clean`` is ``true`` (default), duplicate and interior vertices are removed automatically. You can set it to ``false`` to make the process faster if not needed.
+
+If ``simplify`` is ``true``, the geometry can be further simplified to reduce the amount of vertices. Disabled by default.
+
 ----
 ----
 
 
 .. _class_MeshInstance_method_create_debug_tangents:
 .. _class_MeshInstance_method_create_debug_tangents:
@@ -145,6 +151,14 @@ This helper creates a ``MeshInstance`` child node with gizmos at every vertex ca
 
 
 ----
 ----
 
 
+.. _class_MeshInstance_method_create_multiple_convex_collisions:
+
+- void **create_multiple_convex_collisions** **(** **)**
+
+This helper creates a :ref:`StaticBody<class_StaticBody>` child node with multiple :ref:`ConvexPolygonShape<class_ConvexPolygonShape>` collision shapes calculated from the mesh geometry via convex decomposition. It's mainly used for testing.
+
+----
+
 .. _class_MeshInstance_method_create_trimesh_collision:
 .. _class_MeshInstance_method_create_trimesh_collision:
 
 
 - void **create_trimesh_collision** **(** **)**
 - void **create_trimesh_collision** **(** **)**

+ 1 - 1
classes/class_multimesh.rst

@@ -20,7 +20,7 @@ MultiMesh provides low-level mesh instancing. Drawing thousands of :ref:`MeshIns
 
 
 MultiMesh is much faster as it can draw thousands of instances with a single draw call, resulting in less API overhead.
 MultiMesh is much faster as it can draw thousands of instances with a single draw call, resulting in less API overhead.
 
 
-As a drawback, if the instances are too far away of each other, performance may be reduced as every single instance will always render (they are spatially indexed as one, for the whole object).
+As a drawback, if the instances are too far away from each other, performance may be reduced as every single instance will always render (they are spatially indexed as one, for the whole object).
 
 
 Since instances may have any behavior, the AABB used for visibility must be provided by the user.
 Since instances may have any behavior, the AABB used for visibility must be provided by the user.
 
 

+ 1 - 1
classes/class_multimeshinstance.rst

@@ -9,7 +9,7 @@
 MultiMeshInstance
 MultiMeshInstance
 =================
 =================
 
 
-**Inherits:** :ref:`GeometryInstance<class_GeometryInstance>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`GeometryInstance<class_GeometryInstance>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`CullInstance<class_CullInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
 
 Node that instances a :ref:`MultiMesh<class_MultiMesh>`.
 Node that instances a :ref:`MultiMesh<class_MultiMesh>`.
 
 

+ 2 - 0
classes/class_nodepath.rst

@@ -35,6 +35,8 @@ Some examples of NodePaths include the following:
     @"/root/Main" # If your main scene's root node were named "Main".
     @"/root/Main" # If your main scene's root node were named "Main".
     @"/root/MyAutoload" # If you have an autoloaded node or scene.
     @"/root/MyAutoload" # If you have an autoloaded node or scene.
 
 
+**Note:** In the editor, ``NodePath`` properties are automatically updated when moving, renaming or deleting a node in the scene tree, but they are never updated at runtime.
+
 Tutorials
 Tutorials
 ---------
 ---------
 
 

+ 18 - 0
classes/class_noisetexture.rst

@@ -42,6 +42,8 @@ Properties
 +-------------------------------------------------+-----------------------------------------------------------------+---------------------------+
 +-------------------------------------------------+-----------------------------------------------------------------+---------------------------+
 | :ref:`OpenSimplexNoise<class_OpenSimplexNoise>` | :ref:`noise<class_NoiseTexture_property_noise>`                 |                           |
 | :ref:`OpenSimplexNoise<class_OpenSimplexNoise>` | :ref:`noise<class_NoiseTexture_property_noise>`                 |                           |
 +-------------------------------------------------+-----------------------------------------------------------------+---------------------------+
 +-------------------------------------------------+-----------------------------------------------------------------+---------------------------+
+| :ref:`Vector2<class_Vector2>`                   | :ref:`noise_offset<class_NoiseTexture_property_noise_offset>`   | ``Vector2( 0, 0 )``       |
++-------------------------------------------------+-----------------------------------------------------------------+---------------------------+
 | :ref:`bool<class_bool>`                         | :ref:`seamless<class_NoiseTexture_property_seamless>`           | ``false``                 |
 | :ref:`bool<class_bool>`                         | :ref:`seamless<class_NoiseTexture_property_seamless>`           | ``false``                 |
 +-------------------------------------------------+-----------------------------------------------------------------+---------------------------+
 +-------------------------------------------------+-----------------------------------------------------------------+---------------------------+
 | :ref:`int<class_int>`                           | :ref:`width<class_NoiseTexture_property_width>`                 | ``512``                   |
 | :ref:`int<class_int>`                           | :ref:`width<class_NoiseTexture_property_width>`                 | ``512``                   |
@@ -112,6 +114,22 @@ The :ref:`OpenSimplexNoise<class_OpenSimplexNoise>` instance used to generate th
 
 
 ----
 ----
 
 
+.. _class_NoiseTexture_property_noise_offset:
+
+- :ref:`Vector2<class_Vector2>` **noise_offset**
+
++-----------+-------------------------+
+| *Default* | ``Vector2( 0, 0 )``     |
++-----------+-------------------------+
+| *Setter*  | set_noise_offset(value) |
++-----------+-------------------------+
+| *Getter*  | get_noise_offset()      |
++-----------+-------------------------+
+
+An offset used to specify the noise space coordinate of the top left corner of the generated noise. This value is ignored if :ref:`seamless<class_NoiseTexture_property_seamless>` is enabled.
+
+----
+
 .. _class_NoiseTexture_property_seamless:
 .. _class_NoiseTexture_property_seamless:
 
 
 - :ref:`bool<class_bool>` **seamless**
 - :ref:`bool<class_bool>` **seamless**

+ 1 - 1
classes/class_object.rst

@@ -9,7 +9,7 @@
 Object
 Object
 ======
 ======
 
 
-**Inherited By:** :ref:`ARVRPositionalTracker<class_ARVRPositionalTracker>`, :ref:`ARVRServer<class_ARVRServer>`, :ref:`AudioServer<class_AudioServer>`, :ref:`CameraServer<class_CameraServer>`, :ref:`ClassDB<class_ClassDB>`, :ref:`EditorFileSystemDirectory<class_EditorFileSystemDirectory>`, :ref:`EditorNavigationMeshGenerator<class_EditorNavigationMeshGenerator>`, :ref:`EditorSelection<class_EditorSelection>`, :ref:`EditorVCSInterface<class_EditorVCSInterface>`, :ref:`Engine<class_Engine>`, :ref:`Geometry<class_Geometry>`, :ref:`GodotSharp<class_GodotSharp>`, :ref:`IP<class_IP>`, :ref:`Input<class_Input>`, :ref:`InputMap<class_InputMap>`, :ref:`JNISingleton<class_JNISingleton>`, :ref:`JSON<class_JSON>`, :ref:`JSONRPC<class_JSONRPC>`, :ref:`JavaClassWrapper<class_JavaClassWrapper>`, :ref:`JavaScript<class_JavaScript>`, :ref:`MainLoop<class_MainLoop>`, :ref:`Marshalls<class_Marshalls>`, :ref:`Node<class_Node>`, :ref:`OS<class_OS>`, :ref:`Performance<class_Performance>`, :ref:`Physics2DDirectBodyState<class_Physics2DDirectBodyState>`, :ref:`Physics2DDirectSpaceState<class_Physics2DDirectSpaceState>`, :ref:`Physics2DServer<class_Physics2DServer>`, :ref:`PhysicsDirectBodyState<class_PhysicsDirectBodyState>`, :ref:`PhysicsDirectSpaceState<class_PhysicsDirectSpaceState>`, :ref:`PhysicsServer<class_PhysicsServer>`, :ref:`ProjectSettings<class_ProjectSettings>`, :ref:`Reference<class_Reference>`, :ref:`ResourceLoader<class_ResourceLoader>`, :ref:`ResourceSaver<class_ResourceSaver>`, :ref:`TranslationServer<class_TranslationServer>`, :ref:`TreeItem<class_TreeItem>`, :ref:`UndoRedo<class_UndoRedo>`, :ref:`VisualScriptEditor<class_VisualScriptEditor>`, :ref:`VisualServer<class_VisualServer>`
+**Inherited By:** :ref:`ARVRServer<class_ARVRServer>`, :ref:`AudioServer<class_AudioServer>`, :ref:`CameraServer<class_CameraServer>`, :ref:`ClassDB<class_ClassDB>`, :ref:`EditorFileSystemDirectory<class_EditorFileSystemDirectory>`, :ref:`EditorNavigationMeshGenerator<class_EditorNavigationMeshGenerator>`, :ref:`EditorSelection<class_EditorSelection>`, :ref:`EditorVCSInterface<class_EditorVCSInterface>`, :ref:`Engine<class_Engine>`, :ref:`Geometry<class_Geometry>`, :ref:`GodotSharp<class_GodotSharp>`, :ref:`IP<class_IP>`, :ref:`Input<class_Input>`, :ref:`InputMap<class_InputMap>`, :ref:`JNISingleton<class_JNISingleton>`, :ref:`JSON<class_JSON>`, :ref:`JSONRPC<class_JSONRPC>`, :ref:`JavaClassWrapper<class_JavaClassWrapper>`, :ref:`JavaScript<class_JavaScript>`, :ref:`MainLoop<class_MainLoop>`, :ref:`Marshalls<class_Marshalls>`, :ref:`Node<class_Node>`, :ref:`OS<class_OS>`, :ref:`Performance<class_Performance>`, :ref:`Physics2DDirectBodyState<class_Physics2DDirectBodyState>`, :ref:`Physics2DDirectSpaceState<class_Physics2DDirectSpaceState>`, :ref:`Physics2DServer<class_Physics2DServer>`, :ref:`PhysicsDirectBodyState<class_PhysicsDirectBodyState>`, :ref:`PhysicsDirectSpaceState<class_PhysicsDirectSpaceState>`, :ref:`PhysicsServer<class_PhysicsServer>`, :ref:`ProjectSettings<class_ProjectSettings>`, :ref:`Reference<class_Reference>`, :ref:`ResourceLoader<class_ResourceLoader>`, :ref:`ResourceSaver<class_ResourceSaver>`, :ref:`TranslationServer<class_TranslationServer>`, :ref:`TreeItem<class_TreeItem>`, :ref:`UndoRedo<class_UndoRedo>`, :ref:`VisualScriptEditor<class_VisualScriptEditor>`, :ref:`VisualServer<class_VisualServer>`
 
 
 Base class for all non-built-in types.
 Base class for all non-built-in types.
 
 

+ 1 - 1
classes/class_omnilight.rst

@@ -9,7 +9,7 @@
 OmniLight
 OmniLight
 =========
 =========
 
 
-**Inherits:** :ref:`Light<class_Light>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`Light<class_Light>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`CullInstance<class_CullInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
 
 Omnidirectional light, such as a light bulb or a candle.
 Omnidirectional light, such as a light bulb or a candle.
 
 

+ 3 - 3
classes/class_opensimplexnoise.rst

@@ -53,7 +53,7 @@ Methods
 -------
 -------
 
 
 +---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Image<class_Image>` | :ref:`get_image<class_OpenSimplexNoise_method_get_image>` **(** :ref:`int<class_int>` width, :ref:`int<class_int>` height **)** |const|                                                                |
+| :ref:`Image<class_Image>` | :ref:`get_image<class_OpenSimplexNoise_method_get_image>` **(** :ref:`int<class_int>` width, :ref:`int<class_int>` height, :ref:`Vector2<class_Vector2>` noise_offset=Vector2( 0, 0 ) **)** |const|    |
 +---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`float<class_float>` | :ref:`get_noise_1d<class_OpenSimplexNoise_method_get_noise_1d>` **(** :ref:`float<class_float>` x **)** |const|                                                                                        |
 | :ref:`float<class_float>` | :ref:`get_noise_1d<class_OpenSimplexNoise_method_get_noise_1d>` **(** :ref:`float<class_float>` x **)** |const|                                                                                        |
 +---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -158,9 +158,9 @@ Method Descriptions
 
 
 .. _class_OpenSimplexNoise_method_get_image:
 .. _class_OpenSimplexNoise_method_get_image:
 
 
-- :ref:`Image<class_Image>` **get_image** **(** :ref:`int<class_int>` width, :ref:`int<class_int>` height **)** |const|
+- :ref:`Image<class_Image>` **get_image** **(** :ref:`int<class_int>` width, :ref:`int<class_int>` height, :ref:`Vector2<class_Vector2>` noise_offset=Vector2( 0, 0 ) **)** |const|
 
 
-Generate a noise image in :ref:`Image.FORMAT_L8<class_Image_constant_FORMAT_L8>` format with the requested ``width`` and ``height``, based on the current noise parameters.
+Generate a noise image in :ref:`Image.FORMAT_L8<class_Image_constant_FORMAT_L8>` format with the requested ``width`` and ``height``, based on the current noise parameters. If ``noise_offset`` is specified, then the offset value is used as the coordinates of the top-left corner of the generated noise.
 
 
 ----
 ----
 
 

+ 77 - 11
classes/class_os.rst

@@ -31,6 +31,8 @@ Properties
 +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------+---------------------+
 +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------+---------------------+
 | :ref:`int<class_int>`                               | :ref:`current_screen<class_OS_property_current_screen>`                                               | ``0``               |
 | :ref:`int<class_int>`                               | :ref:`current_screen<class_OS_property_current_screen>`                                               | ``0``               |
 +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------+---------------------+
 +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------+---------------------+
+| :ref:`bool<class_bool>`                             | :ref:`delta_smoothing<class_OS_property_delta_smoothing>`                                             | ``true``            |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------+---------------------+
 | :ref:`int<class_int>`                               | :ref:`exit_code<class_OS_property_exit_code>`                                                         | ``0``               |
 | :ref:`int<class_int>`                               | :ref:`exit_code<class_OS_property_exit_code>`                                                         | ``0``               |
 +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------+---------------------+
 +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------+---------------------+
 | :ref:`bool<class_bool>`                             | :ref:`keep_screen_on<class_OS_property_keep_screen_on>`                                               | ``true``            |
 | :ref:`bool<class_bool>`                             | :ref:`keep_screen_on<class_OS_property_keep_screen_on>`                                               | ``true``            |
@@ -98,12 +100,18 @@ Methods
 +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`String<class_String>`                   | :ref:`get_audio_driver_name<class_OS_method_get_audio_driver_name>` **(** :ref:`int<class_int>` driver **)** |const|                                                                                                                                                   |
 | :ref:`String<class_String>`                   | :ref:`get_audio_driver_name<class_OS_method_get_audio_driver_name>` **(** :ref:`int<class_int>` driver **)** |const|                                                                                                                                                   |
 +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`get_cache_dir<class_OS_method_get_cache_dir>` **(** **)** |const|                                                                                                                                                                                                |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`PoolStringArray<class_PoolStringArray>` | :ref:`get_cmdline_args<class_OS_method_get_cmdline_args>` **(** **)**                                                                                                                                                                                                  |
 | :ref:`PoolStringArray<class_PoolStringArray>` | :ref:`get_cmdline_args<class_OS_method_get_cmdline_args>` **(** **)**                                                                                                                                                                                                  |
 +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`get_config_dir<class_OS_method_get_config_dir>` **(** **)** |const|                                                                                                                                                                                              |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`PoolStringArray<class_PoolStringArray>` | :ref:`get_connected_midi_inputs<class_OS_method_get_connected_midi_inputs>` **(** **)**                                                                                                                                                                                |
 | :ref:`PoolStringArray<class_PoolStringArray>` | :ref:`get_connected_midi_inputs<class_OS_method_get_connected_midi_inputs>` **(** **)**                                                                                                                                                                                |
 +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`VideoDriver<enum_OS_VideoDriver>`       | :ref:`get_current_video_driver<class_OS_method_get_current_video_driver>` **(** **)** |const|                                                                                                                                                                          |
 | :ref:`VideoDriver<enum_OS_VideoDriver>`       | :ref:`get_current_video_driver<class_OS_method_get_current_video_driver>` **(** **)** |const|                                                                                                                                                                          |
 +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`get_data_dir<class_OS_method_get_data_dir>` **(** **)** |const|                                                                                                                                                                                                  |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Dictionary<class_Dictionary>`           | :ref:`get_date<class_OS_method_get_date>` **(** :ref:`bool<class_bool>` utc=false **)** |const|                                                                                                                                                                        |
 | :ref:`Dictionary<class_Dictionary>`           | :ref:`get_date<class_OS_method_get_date>` **(** :ref:`bool<class_bool>` utc=false **)** |const|                                                                                                                                                                        |
 +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Dictionary<class_Dictionary>`           | :ref:`get_datetime<class_OS_method_get_datetime>` **(** :ref:`bool<class_bool>` utc=false **)** |const|                                                                                                                                                                |
 | :ref:`Dictionary<class_Dictionary>`           | :ref:`get_datetime<class_OS_method_get_datetime>` **(** :ref:`bool<class_bool>` utc=false **)** |const|                                                                                                                                                                |
@@ -116,6 +124,8 @@ Methods
 +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`String<class_String>`                   | :ref:`get_executable_path<class_OS_method_get_executable_path>` **(** **)** |const|                                                                                                                                                                                    |
 | :ref:`String<class_String>`                   | :ref:`get_executable_path<class_OS_method_get_executable_path>` **(** **)** |const|                                                                                                                                                                                    |
 +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`get_external_data_dir<class_OS_method_get_external_data_dir>` **(** **)** |const|                                                                                                                                                                                |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`PoolStringArray<class_PoolStringArray>` | :ref:`get_granted_permissions<class_OS_method_get_granted_permissions>` **(** **)** |const|                                                                                                                                                                            |
 | :ref:`PoolStringArray<class_PoolStringArray>` | :ref:`get_granted_permissions<class_OS_method_get_granted_permissions>` **(** **)** |const|                                                                                                                                                                            |
 +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Vector2<class_Vector2>`                 | :ref:`get_ime_selection<class_OS_method_get_ime_selection>` **(** **)** |const|                                                                                                                                                                                        |
 | :ref:`Vector2<class_Vector2>`                 | :ref:`get_ime_selection<class_OS_method_get_ime_selection>` **(** **)** |const|                                                                                                                                                                                        |
@@ -585,6 +595,22 @@ The current screen index (starting from 0).
 
 
 ----
 ----
 
 
+.. _class_OS_property_delta_smoothing:
+
+- :ref:`bool<class_bool>` **delta_smoothing**
+
++-----------+------------------------------+
+| *Default* | ``true``                     |
++-----------+------------------------------+
+| *Setter*  | set_delta_smoothing(value)   |
++-----------+------------------------------+
+| *Getter*  | is_delta_smoothing_enabled() |
++-----------+------------------------------+
+
+If ``true``, the engine filters the time delta measured between each frame, and attempts to compensate for random variation. This will only operate on systems where V-Sync is active.
+
+----
+
 .. _class_OS_property_exit_code:
 .. _class_OS_property_exit_code:
 
 
 - :ref:`int<class_int>` **exit_code**
 - :ref:`int<class_int>` **exit_code**
@@ -934,7 +960,7 @@ Shuts down system MIDI driver.
 
 
 - void **delay_msec** **(** :ref:`int<class_int>` msec **)** |const|
 - void **delay_msec** **(** :ref:`int<class_int>` msec **)** |const|
 
 
-Delay execution of the current thread by ``msec`` milliseconds. ``usec`` must be greater than or equal to ``0``. Otherwise, :ref:`delay_msec<class_OS_method_delay_msec>` will do nothing and will print an error message.
+Delay execution of the current thread by ``msec`` milliseconds. ``msec`` must be greater than or equal to ``0``. Otherwise, :ref:`delay_msec<class_OS_method_delay_msec>` will do nothing and will print an error message.
 
 
 ----
 ----
 
 
@@ -1031,6 +1057,16 @@ Returns the audio driver name for the given index.
 
 
 ----
 ----
 
 
+.. _class_OS_method_get_cache_dir:
+
+- :ref:`String<class_String>` **get_cache_dir** **(** **)** |const|
+
+Returns the *global* cache data directory according to the operating system's standards. On desktop platforms, this path can be overridden by setting the ``XDG_CACHE_HOME`` environment variable before starting the project. See `File paths in Godot projects <https://docs.godotengine.org/en/latest/tutorials/io/data_paths.html>`_ in the documentation for more information. See also :ref:`get_config_dir<class_OS_method_get_config_dir>` and :ref:`get_data_dir<class_OS_method_get_data_dir>`.
+
+Not to be confused with :ref:`get_user_data_dir<class_OS_method_get_user_data_dir>`, which returns the *project-specific* user data path.
+
+----
+
 .. _class_OS_method_get_cmdline_args:
 .. _class_OS_method_get_cmdline_args:
 
 
 - :ref:`PoolStringArray<class_PoolStringArray>` **get_cmdline_args** **(** **)**
 - :ref:`PoolStringArray<class_PoolStringArray>` **get_cmdline_args** **(** **)**
@@ -1041,7 +1077,7 @@ Command-line arguments can be written in any form, including both ``--key value`
 
 
 You can also incorporate environment variables using the :ref:`get_environment<class_OS_method_get_environment>` method.
 You can also incorporate environment variables using the :ref:`get_environment<class_OS_method_get_environment>` method.
 
 
-You can set ``editor/main_run_args`` in the Project Settings to define command-line arguments to be passed by the editor when running the project.
+You can set :ref:`ProjectSettings.editor/main_run_args<class_ProjectSettings_property_editor/main_run_args>` to define command-line arguments to be passed by the editor when running the project.
 
 
 Here's a minimal example on how to parse command-line arguments into a dictionary using the ``--key=value`` form for arguments:
 Here's a minimal example on how to parse command-line arguments into a dictionary using the ``--key=value`` form for arguments:
 
 
@@ -1055,6 +1091,16 @@ Here's a minimal example on how to parse command-line arguments into a dictionar
 
 
 ----
 ----
 
 
+.. _class_OS_method_get_config_dir:
+
+- :ref:`String<class_String>` **get_config_dir** **(** **)** |const|
+
+Returns the *global* user configuration directory according to the operating system's standards. On desktop platforms, this path can be overridden by setting the ``XDG_CONFIG_HOME`` environment variable before starting the project. See `File paths in Godot projects <https://docs.godotengine.org/en/latest/tutorials/io/data_paths.html>`_ in the documentation for more information. See also :ref:`get_cache_dir<class_OS_method_get_cache_dir>` and :ref:`get_data_dir<class_OS_method_get_data_dir>`.
+
+Not to be confused with :ref:`get_user_data_dir<class_OS_method_get_user_data_dir>`, which returns the *project-specific* user data path.
+
+----
+
 .. _class_OS_method_get_connected_midi_inputs:
 .. _class_OS_method_get_connected_midi_inputs:
 
 
 - :ref:`PoolStringArray<class_PoolStringArray>` **get_connected_midi_inputs** **(** **)**
 - :ref:`PoolStringArray<class_PoolStringArray>` **get_connected_midi_inputs** **(** **)**
@@ -1075,6 +1121,16 @@ Returns the currently used video driver, using one of the values from :ref:`Vide
 
 
 ----
 ----
 
 
+.. _class_OS_method_get_data_dir:
+
+- :ref:`String<class_String>` **get_data_dir** **(** **)** |const|
+
+Returns the *global* user data directory according to the operating system's standards. On desktop platforms, this path can be overridden by setting the ``XDG_DATA_HOME`` environment variable before starting the project. See `File paths in Godot projects <https://docs.godotengine.org/en/latest/tutorials/io/data_paths.html>`_ in the documentation for more information. See also :ref:`get_cache_dir<class_OS_method_get_cache_dir>` and :ref:`get_config_dir<class_OS_method_get_config_dir>`.
+
+Not to be confused with :ref:`get_user_data_dir<class_OS_method_get_user_data_dir>`, which returns the *project-specific* user data path.
+
+----
+
 .. _class_OS_method_get_date:
 .. _class_OS_method_get_date:
 
 
 - :ref:`Dictionary<class_Dictionary>` **get_date** **(** :ref:`bool<class_bool>` utc=false **)** |const|
 - :ref:`Dictionary<class_Dictionary>` **get_date** **(** :ref:`bool<class_bool>` utc=false **)** |const|
@@ -1127,11 +1183,19 @@ Returns the path to the current engine executable.
 
 
 ----
 ----
 
 
+.. _class_OS_method_get_external_data_dir:
+
+- :ref:`String<class_String>` **get_external_data_dir** **(** **)** |const|
+
+On Android, returns the absolute directory path where user data can be written to external storage if available. On all other platforms, this will return the same location as :ref:`get_user_data_dir<class_OS_method_get_user_data_dir>`.
+
+----
+
 .. _class_OS_method_get_granted_permissions:
 .. _class_OS_method_get_granted_permissions:
 
 
 - :ref:`PoolStringArray<class_PoolStringArray>` **get_granted_permissions** **(** **)** |const|
 - :ref:`PoolStringArray<class_PoolStringArray>` **get_granted_permissions** **(** **)** |const|
 
 
-With this function you can get the list of dangerous permissions that have been granted to the Android application.
+With this function, you can get the list of dangerous permissions that have been granted to the Android application.
 
 
 **Note:** This method is implemented on Android.
 **Note:** This method is implemented on Android.
 
 
@@ -1464,7 +1528,7 @@ Returns the current time zone as a dictionary with the keys: bias and name.
 
 
 Returns a string that is unique to the device.
 Returns a string that is unique to the device.
 
 
-**Note:** This string may change without notice if the user reinstalls/upgrades their operating system or changes their hardware. This means it should generally not be used to encrypt persistent data as the data saved prior to an unexpected ID change would become inaccessible. The returned string may also be falsified using external programs, so do not rely on the string returned by :ref:`get_unique_id<class_OS_method_get_unique_id>` for security purposes.
+**Note:** This string may change without notice if the user reinstalls/upgrades their operating system or changes their hardware. This means it should generally not be used to encrypt persistent data as the data saved before an unexpected ID change would become inaccessible. The returned string may also be falsified using external programs, so do not rely on the string returned by :ref:`get_unique_id<class_OS_method_get_unique_id>` for security purposes.
 
 
 **Note:** Returns an empty string on HTML5 and UWP, as this method isn't implemented on those platforms yet.
 **Note:** Returns an empty string on HTML5 and UWP, as this method isn't implemented on those platforms yet.
 
 
@@ -1508,6 +1572,8 @@ On Windows, this is ``%APPDATA%\Godot\app_userdata\[project_name]``, or ``%APPDA
 
 
 If the project name is empty, ``user://`` falls back to ``res://``.
 If the project name is empty, ``user://`` falls back to ``res://``.
 
 
+Not to be confused with :ref:`get_data_dir<class_OS_method_get_data_dir>`, which returns the *global* (non-project-specific) user data directory.
+
 ----
 ----
 
 
 .. _class_OS_method_get_video_driver_count:
 .. _class_OS_method_get_video_driver_count:
@@ -1596,7 +1662,7 @@ Returns ``true`` if the environment variable with the name ``variable`` exists.
 
 
 - :ref:`bool<class_bool>` **has_feature** **(** :ref:`String<class_String>` tag_name **)** |const|
 - :ref:`bool<class_bool>` **has_feature** **(** :ref:`String<class_String>` tag_name **)** |const|
 
 
-Returns ``true`` if the feature for the given feature tag is supported in the currently running instance, depending on platform, build etc. Can be used to check whether you're currently running a debug build, on a certain platform or arch, etc. Refer to the `Feature Tags <https://docs.godotengine.org/en/3.3/getting_started/workflow/export/feature_tags.html>`_ documentation for more details.
+Returns ``true`` if the feature for the given feature tag is supported in the currently running instance, depending on the platform, build etc. Can be used to check whether you're currently running a debug build, on a certain platform or arch, etc. Refer to the `Feature Tags <https://docs.godotengine.org/en/3.3/getting_started/workflow/export/feature_tags.html>`_ documentation for more details.
 
 
 **Note:** Tag names are case-sensitive.
 **Note:** Tag names are case-sensitive.
 
 
@@ -1766,7 +1832,7 @@ Moves the window to the front.
 
 
 Returns ``true`` if native video is playing.
 Returns ``true`` if native video is playing.
 
 
-**Note:** This method is implemented on Android and iOS.
+**Note:** This method is only implemented on iOS.
 
 
 ----
 ----
 
 
@@ -1776,7 +1842,7 @@ Returns ``true`` if native video is playing.
 
 
 Pauses native video playback.
 Pauses native video playback.
 
 
-**Note:** This method is implemented on Android and iOS.
+**Note:** This method is only implemented on iOS.
 
 
 ----
 ----
 
 
@@ -1786,7 +1852,7 @@ Pauses native video playback.
 
 
 Plays native video from the specified path, at the given volume and with audio and subtitle tracks.
 Plays native video from the specified path, at the given volume and with audio and subtitle tracks.
 
 
-**Note:** This method is implemented on Android and iOS, and the current Android implementation does not support the ``volume``, ``audio_track`` and ``subtitle_track`` options.
+**Note:** This method is only implemented on iOS.
 
 
 ----
 ----
 
 
@@ -1796,7 +1862,7 @@ Plays native video from the specified path, at the given volume and with audio a
 
 
 Stops native video playback.
 Stops native video playback.
 
 
-**Note:** This method is implemented on Android and iOS.
+**Note:** This method is implemented on iOS.
 
 
 ----
 ----
 
 
@@ -1806,7 +1872,7 @@ Stops native video playback.
 
 
 Resumes native video playback.
 Resumes native video playback.
 
 
-**Note:** This method is implemented on Android and iOS.
+**Note:** This method is implemented on iOS.
 
 
 ----
 ----
 
 
@@ -1874,7 +1940,7 @@ At the moment this function is only used by ``AudioDriverOpenSL`` to request per
 
 
 - :ref:`bool<class_bool>` **request_permissions** **(** **)**
 - :ref:`bool<class_bool>` **request_permissions** **(** **)**
 
 
-With this function you can request dangerous permissions since normal permissions are automatically granted at install time in Android application.
+With this function, you can request dangerous permissions since normal permissions are automatically granted at install time in Android applications.
 
 
 **Note:** This method is implemented on Android.
 **Note:** This method is implemented on Android.
 
 

+ 2 - 0
classes/class_packedscene.rst

@@ -11,6 +11,8 @@ PackedScene
 
 
 **Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
 **Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
 
 
+**Inherited By:** :ref:`PackedSceneGLTF<class_PackedSceneGLTF>`
+
 An abstraction of a serialized scene.
 An abstraction of a serialized scene.
 
 
 Description
 Description

+ 55 - 0
classes/class_packedscenegltf.rst

@@ -0,0 +1,55 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the PackedSceneGLTF.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_PackedSceneGLTF:
+
+PackedSceneGLTF
+===============
+
+**Inherits:** :ref:`PackedScene<class_PackedScene>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+
+
+
+Properties
+----------
+
++-------------------------------------+----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>` | _bundled | ``{"conn_count": 0,"conns": PoolIntArray(  ),"editable_instances": [  ],"names": PoolStringArray(  ),"node_count": 0,"node_paths": [  ],"nodes": PoolIntArray(  ),"variants": [  ],"version": 2}`` *(parent override)* |
++-------------------------------------+----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+Methods
+-------
+
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`export_gltf<class_PackedSceneGLTF_method_export_gltf>` **(** :ref:`Node<class_Node>` node, :ref:`String<class_String>` path, :ref:`int<class_int>` flags=0, :ref:`float<class_float>` bake_fps=1000.0 **)**                             |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Node<class_Node>`               | :ref:`import_gltf_scene<class_PackedSceneGLTF_method_import_gltf_scene>` **(** :ref:`String<class_String>` path, :ref:`int<class_int>` flags=0, :ref:`float<class_float>` bake_fps=1000.0, :ref:`GLTFState<class_GLTFState>` state=null **)** |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`pack_gltf<class_PackedSceneGLTF_method_pack_gltf>` **(** :ref:`String<class_String>` path, :ref:`int<class_int>` flags=0, :ref:`float<class_float>` bake_fps=1000.0, :ref:`GLTFState<class_GLTFState>` state=null **)**                 |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+Method Descriptions
+-------------------
+
+.. _class_PackedSceneGLTF_method_export_gltf:
+
+- :ref:`Error<enum_@GlobalScope_Error>` **export_gltf** **(** :ref:`Node<class_Node>` node, :ref:`String<class_String>` path, :ref:`int<class_int>` flags=0, :ref:`float<class_float>` bake_fps=1000.0 **)**
+
+----
+
+.. _class_PackedSceneGLTF_method_import_gltf_scene:
+
+- :ref:`Node<class_Node>` **import_gltf_scene** **(** :ref:`String<class_String>` path, :ref:`int<class_int>` flags=0, :ref:`float<class_float>` bake_fps=1000.0, :ref:`GLTFState<class_GLTFState>` state=null **)**
+
+----
+
+.. _class_PackedSceneGLTF_method_pack_gltf:
+
+- void **pack_gltf** **(** :ref:`String<class_String>` path, :ref:`int<class_int>` flags=0, :ref:`float<class_float>` bake_fps=1000.0, :ref:`GLTFState<class_GLTFState>` state=null **)**
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`

+ 1 - 1
classes/class_particles.rst

@@ -9,7 +9,7 @@
 Particles
 Particles
 =========
 =========
 
 
-**Inherits:** :ref:`GeometryInstance<class_GeometryInstance>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`GeometryInstance<class_GeometryInstance>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`CullInstance<class_CullInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
 
 GPU-based 3D particle emitter.
 GPU-based 3D particle emitter.
 
 

+ 185 - 115
classes/class_particlesmaterial.rst

@@ -25,117 +25,125 @@ When a randomness ratio is applied to a property it is used to scale that proper
 Properties
 Properties
 ----------
 ----------
 
 
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                                  | :ref:`angle<class_ParticlesMaterial_property_angle>`                                     | ``0.0``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Texture<class_Texture>`                              | :ref:`angle_curve<class_ParticlesMaterial_property_angle_curve>`                         |                           |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                                  | :ref:`angle_random<class_ParticlesMaterial_property_angle_random>`                       | ``0.0``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                                  | :ref:`angular_velocity<class_ParticlesMaterial_property_angular_velocity>`               | ``0.0``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Texture<class_Texture>`                              | :ref:`angular_velocity_curve<class_ParticlesMaterial_property_angular_velocity_curve>`   |                           |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                                  | :ref:`angular_velocity_random<class_ParticlesMaterial_property_angular_velocity_random>` | ``0.0``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                                  | :ref:`anim_offset<class_ParticlesMaterial_property_anim_offset>`                         | ``0.0``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Texture<class_Texture>`                              | :ref:`anim_offset_curve<class_ParticlesMaterial_property_anim_offset_curve>`             |                           |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                                  | :ref:`anim_offset_random<class_ParticlesMaterial_property_anim_offset_random>`           | ``0.0``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                                  | :ref:`anim_speed<class_ParticlesMaterial_property_anim_speed>`                           | ``0.0``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Texture<class_Texture>`                              | :ref:`anim_speed_curve<class_ParticlesMaterial_property_anim_speed_curve>`               |                           |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                                  | :ref:`anim_speed_random<class_ParticlesMaterial_property_anim_speed_random>`             | ``0.0``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Color<class_Color>`                                  | :ref:`color<class_ParticlesMaterial_property_color>`                                     | ``Color( 1, 1, 1, 1 )``   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Texture<class_Texture>`                              | :ref:`color_ramp<class_ParticlesMaterial_property_color_ramp>`                           |                           |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                                  | :ref:`damping<class_ParticlesMaterial_property_damping>`                                 | ``0.0``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Texture<class_Texture>`                              | :ref:`damping_curve<class_ParticlesMaterial_property_damping_curve>`                     |                           |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                                  | :ref:`damping_random<class_ParticlesMaterial_property_damping_random>`                   | ``0.0``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Vector3<class_Vector3>`                              | :ref:`direction<class_ParticlesMaterial_property_direction>`                             | ``Vector3( 1, 0, 0 )``    |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Vector3<class_Vector3>`                              | :ref:`emission_box_extents<class_ParticlesMaterial_property_emission_box_extents>`       |                           |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Texture<class_Texture>`                              | :ref:`emission_color_texture<class_ParticlesMaterial_property_emission_color_texture>`   |                           |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Texture<class_Texture>`                              | :ref:`emission_normal_texture<class_ParticlesMaterial_property_emission_normal_texture>` |                           |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`int<class_int>`                                      | :ref:`emission_point_count<class_ParticlesMaterial_property_emission_point_count>`       |                           |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Texture<class_Texture>`                              | :ref:`emission_point_texture<class_ParticlesMaterial_property_emission_point_texture>`   |                           |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`EmissionShape<enum_ParticlesMaterial_EmissionShape>` | :ref:`emission_shape<class_ParticlesMaterial_property_emission_shape>`                   | ``0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                                  | :ref:`emission_sphere_radius<class_ParticlesMaterial_property_emission_sphere_radius>`   |                           |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`bool<class_bool>`                                    | :ref:`flag_align_y<class_ParticlesMaterial_property_flag_align_y>`                       | ``false``                 |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`bool<class_bool>`                                    | :ref:`flag_disable_z<class_ParticlesMaterial_property_flag_disable_z>`                   | ``false``                 |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`bool<class_bool>`                                    | :ref:`flag_rotate_y<class_ParticlesMaterial_property_flag_rotate_y>`                     | ``false``                 |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                                  | :ref:`flatness<class_ParticlesMaterial_property_flatness>`                               | ``0.0``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Vector3<class_Vector3>`                              | :ref:`gravity<class_ParticlesMaterial_property_gravity>`                                 | ``Vector3( 0, -9.8, 0 )`` |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                                  | :ref:`hue_variation<class_ParticlesMaterial_property_hue_variation>`                     | ``0.0``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Texture<class_Texture>`                              | :ref:`hue_variation_curve<class_ParticlesMaterial_property_hue_variation_curve>`         |                           |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                                  | :ref:`hue_variation_random<class_ParticlesMaterial_property_hue_variation_random>`       | ``0.0``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                                  | :ref:`initial_velocity<class_ParticlesMaterial_property_initial_velocity>`               | ``0.0``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                                  | :ref:`initial_velocity_random<class_ParticlesMaterial_property_initial_velocity_random>` | ``0.0``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                                  | :ref:`lifetime_randomness<class_ParticlesMaterial_property_lifetime_randomness>`         | ``0.0``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                                  | :ref:`linear_accel<class_ParticlesMaterial_property_linear_accel>`                       | ``0.0``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Texture<class_Texture>`                              | :ref:`linear_accel_curve<class_ParticlesMaterial_property_linear_accel_curve>`           |                           |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                                  | :ref:`linear_accel_random<class_ParticlesMaterial_property_linear_accel_random>`         | ``0.0``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                                  | :ref:`orbit_velocity<class_ParticlesMaterial_property_orbit_velocity>`                   |                           |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Texture<class_Texture>`                              | :ref:`orbit_velocity_curve<class_ParticlesMaterial_property_orbit_velocity_curve>`       |                           |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                                  | :ref:`orbit_velocity_random<class_ParticlesMaterial_property_orbit_velocity_random>`     |                           |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                                  | :ref:`radial_accel<class_ParticlesMaterial_property_radial_accel>`                       | ``0.0``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Texture<class_Texture>`                              | :ref:`radial_accel_curve<class_ParticlesMaterial_property_radial_accel_curve>`           |                           |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                                  | :ref:`radial_accel_random<class_ParticlesMaterial_property_radial_accel_random>`         | ``0.0``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                                  | :ref:`scale<class_ParticlesMaterial_property_scale>`                                     | ``1.0``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Texture<class_Texture>`                              | :ref:`scale_curve<class_ParticlesMaterial_property_scale_curve>`                         |                           |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                                  | :ref:`scale_random<class_ParticlesMaterial_property_scale_random>`                       | ``0.0``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                                  | :ref:`spread<class_ParticlesMaterial_property_spread>`                                   | ``45.0``                  |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                                  | :ref:`tangential_accel<class_ParticlesMaterial_property_tangential_accel>`               | ``0.0``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`Texture<class_Texture>`                              | :ref:`tangential_accel_curve<class_ParticlesMaterial_property_tangential_accel_curve>`   |                           |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>`                                  | :ref:`tangential_accel_random<class_ParticlesMaterial_property_tangential_accel_random>` | ``0.0``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`GradientTexture<class_GradientTexture>`              | :ref:`trail_color_modifier<class_ParticlesMaterial_property_trail_color_modifier>`       |                           |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`int<class_int>`                                      | :ref:`trail_divisor<class_ParticlesMaterial_property_trail_divisor>`                     | ``1``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
-| :ref:`CurveTexture<class_CurveTexture>`                    | :ref:`trail_size_modifier<class_ParticlesMaterial_property_trail_size_modifier>`         |                           |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------+---------------------------+
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                                  | :ref:`angle<class_ParticlesMaterial_property_angle>`                                           | ``0.0``                   |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Texture<class_Texture>`                              | :ref:`angle_curve<class_ParticlesMaterial_property_angle_curve>`                               |                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                                  | :ref:`angle_random<class_ParticlesMaterial_property_angle_random>`                             | ``0.0``                   |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                                  | :ref:`angular_velocity<class_ParticlesMaterial_property_angular_velocity>`                     | ``0.0``                   |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Texture<class_Texture>`                              | :ref:`angular_velocity_curve<class_ParticlesMaterial_property_angular_velocity_curve>`         |                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                                  | :ref:`angular_velocity_random<class_ParticlesMaterial_property_angular_velocity_random>`       | ``0.0``                   |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                                  | :ref:`anim_offset<class_ParticlesMaterial_property_anim_offset>`                               | ``0.0``                   |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Texture<class_Texture>`                              | :ref:`anim_offset_curve<class_ParticlesMaterial_property_anim_offset_curve>`                   |                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                                  | :ref:`anim_offset_random<class_ParticlesMaterial_property_anim_offset_random>`                 | ``0.0``                   |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                                  | :ref:`anim_speed<class_ParticlesMaterial_property_anim_speed>`                                 | ``0.0``                   |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Texture<class_Texture>`                              | :ref:`anim_speed_curve<class_ParticlesMaterial_property_anim_speed_curve>`                     |                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                                  | :ref:`anim_speed_random<class_ParticlesMaterial_property_anim_speed_random>`                   | ``0.0``                   |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Color<class_Color>`                                  | :ref:`color<class_ParticlesMaterial_property_color>`                                           | ``Color( 1, 1, 1, 1 )``   |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Texture<class_Texture>`                              | :ref:`color_ramp<class_ParticlesMaterial_property_color_ramp>`                                 |                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                                  | :ref:`damping<class_ParticlesMaterial_property_damping>`                                       | ``0.0``                   |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Texture<class_Texture>`                              | :ref:`damping_curve<class_ParticlesMaterial_property_damping_curve>`                           |                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                                  | :ref:`damping_random<class_ParticlesMaterial_property_damping_random>`                         | ``0.0``                   |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Vector3<class_Vector3>`                              | :ref:`direction<class_ParticlesMaterial_property_direction>`                                   | ``Vector3( 1, 0, 0 )``    |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Vector3<class_Vector3>`                              | :ref:`emission_box_extents<class_ParticlesMaterial_property_emission_box_extents>`             |                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Texture<class_Texture>`                              | :ref:`emission_color_texture<class_ParticlesMaterial_property_emission_color_texture>`         |                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Texture<class_Texture>`                              | :ref:`emission_normal_texture<class_ParticlesMaterial_property_emission_normal_texture>`       |                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`int<class_int>`                                      | :ref:`emission_point_count<class_ParticlesMaterial_property_emission_point_count>`             |                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Texture<class_Texture>`                              | :ref:`emission_point_texture<class_ParticlesMaterial_property_emission_point_texture>`         |                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Vector3<class_Vector3>`                              | :ref:`emission_ring_axis<class_ParticlesMaterial_property_emission_ring_axis>`                 | ``Vector3( 0, 0, 1 )``    |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                                  | :ref:`emission_ring_height<class_ParticlesMaterial_property_emission_ring_height>`             |                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                                  | :ref:`emission_ring_inner_radius<class_ParticlesMaterial_property_emission_ring_inner_radius>` |                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                                  | :ref:`emission_ring_radius<class_ParticlesMaterial_property_emission_ring_radius>`             |                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`EmissionShape<enum_ParticlesMaterial_EmissionShape>` | :ref:`emission_shape<class_ParticlesMaterial_property_emission_shape>`                         | ``0``                     |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                                  | :ref:`emission_sphere_radius<class_ParticlesMaterial_property_emission_sphere_radius>`         |                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`bool<class_bool>`                                    | :ref:`flag_align_y<class_ParticlesMaterial_property_flag_align_y>`                             | ``false``                 |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`bool<class_bool>`                                    | :ref:`flag_disable_z<class_ParticlesMaterial_property_flag_disable_z>`                         | ``false``                 |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`bool<class_bool>`                                    | :ref:`flag_rotate_y<class_ParticlesMaterial_property_flag_rotate_y>`                           | ``false``                 |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                                  | :ref:`flatness<class_ParticlesMaterial_property_flatness>`                                     | ``0.0``                   |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Vector3<class_Vector3>`                              | :ref:`gravity<class_ParticlesMaterial_property_gravity>`                                       | ``Vector3( 0, -9.8, 0 )`` |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                                  | :ref:`hue_variation<class_ParticlesMaterial_property_hue_variation>`                           | ``0.0``                   |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Texture<class_Texture>`                              | :ref:`hue_variation_curve<class_ParticlesMaterial_property_hue_variation_curve>`               |                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                                  | :ref:`hue_variation_random<class_ParticlesMaterial_property_hue_variation_random>`             | ``0.0``                   |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                                  | :ref:`initial_velocity<class_ParticlesMaterial_property_initial_velocity>`                     | ``0.0``                   |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                                  | :ref:`initial_velocity_random<class_ParticlesMaterial_property_initial_velocity_random>`       | ``0.0``                   |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                                  | :ref:`lifetime_randomness<class_ParticlesMaterial_property_lifetime_randomness>`               | ``0.0``                   |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                                  | :ref:`linear_accel<class_ParticlesMaterial_property_linear_accel>`                             | ``0.0``                   |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Texture<class_Texture>`                              | :ref:`linear_accel_curve<class_ParticlesMaterial_property_linear_accel_curve>`                 |                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                                  | :ref:`linear_accel_random<class_ParticlesMaterial_property_linear_accel_random>`               | ``0.0``                   |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                                  | :ref:`orbit_velocity<class_ParticlesMaterial_property_orbit_velocity>`                         |                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Texture<class_Texture>`                              | :ref:`orbit_velocity_curve<class_ParticlesMaterial_property_orbit_velocity_curve>`             |                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                                  | :ref:`orbit_velocity_random<class_ParticlesMaterial_property_orbit_velocity_random>`           |                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                                  | :ref:`radial_accel<class_ParticlesMaterial_property_radial_accel>`                             | ``0.0``                   |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Texture<class_Texture>`                              | :ref:`radial_accel_curve<class_ParticlesMaterial_property_radial_accel_curve>`                 |                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                                  | :ref:`radial_accel_random<class_ParticlesMaterial_property_radial_accel_random>`               | ``0.0``                   |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                                  | :ref:`scale<class_ParticlesMaterial_property_scale>`                                           | ``1.0``                   |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Texture<class_Texture>`                              | :ref:`scale_curve<class_ParticlesMaterial_property_scale_curve>`                               |                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                                  | :ref:`scale_random<class_ParticlesMaterial_property_scale_random>`                             | ``0.0``                   |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                                  | :ref:`spread<class_ParticlesMaterial_property_spread>`                                         | ``45.0``                  |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                                  | :ref:`tangential_accel<class_ParticlesMaterial_property_tangential_accel>`                     | ``0.0``                   |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Texture<class_Texture>`                              | :ref:`tangential_accel_curve<class_ParticlesMaterial_property_tangential_accel_curve>`         |                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`float<class_float>`                                  | :ref:`tangential_accel_random<class_ParticlesMaterial_property_tangential_accel_random>`       | ``0.0``                   |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`GradientTexture<class_GradientTexture>`              | :ref:`trail_color_modifier<class_ParticlesMaterial_property_trail_color_modifier>`             |                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`int<class_int>`                                      | :ref:`trail_divisor<class_ParticlesMaterial_property_trail_divisor>`                           | ``1``                     |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`CurveTexture<class_CurveTexture>`                    | :ref:`trail_size_modifier<class_ParticlesMaterial_property_trail_size_modifier>`               |                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------+
 
 
 Methods
 Methods
 -------
 -------
@@ -253,6 +261,8 @@ enum **Flags**:
 
 
 .. _class_ParticlesMaterial_constant_EMISSION_SHAPE_DIRECTED_POINTS:
 .. _class_ParticlesMaterial_constant_EMISSION_SHAPE_DIRECTED_POINTS:
 
 
+.. _class_ParticlesMaterial_constant_EMISSION_SHAPE_RING:
+
 .. _class_ParticlesMaterial_constant_EMISSION_SHAPE_MAX:
 .. _class_ParticlesMaterial_constant_EMISSION_SHAPE_MAX:
 
 
 enum **EmissionShape**:
 enum **EmissionShape**:
@@ -267,7 +277,9 @@ enum **EmissionShape**:
 
 
 - **EMISSION_SHAPE_DIRECTED_POINTS** = **4** --- Particles will be emitted at a position determined by sampling a random point on the :ref:`emission_point_texture<class_ParticlesMaterial_property_emission_point_texture>`. Particle velocity and rotation will be set based on :ref:`emission_normal_texture<class_ParticlesMaterial_property_emission_normal_texture>`. Particle color will be modulated by :ref:`emission_color_texture<class_ParticlesMaterial_property_emission_color_texture>`.
 - **EMISSION_SHAPE_DIRECTED_POINTS** = **4** --- Particles will be emitted at a position determined by sampling a random point on the :ref:`emission_point_texture<class_ParticlesMaterial_property_emission_point_texture>`. Particle velocity and rotation will be set based on :ref:`emission_normal_texture<class_ParticlesMaterial_property_emission_normal_texture>`. Particle color will be modulated by :ref:`emission_color_texture<class_ParticlesMaterial_property_emission_color_texture>`.
 
 
-- **EMISSION_SHAPE_MAX** = **5** --- Represents the size of the :ref:`EmissionShape<enum_ParticlesMaterial_EmissionShape>` enum.
+- **EMISSION_SHAPE_RING** = **5** --- Particles will be emitted in a ring or cylinder.
+
+- **EMISSION_SHAPE_MAX** = **6** --- Represents the size of the :ref:`EmissionShape<enum_ParticlesMaterial_EmissionShape>` enum.
 
 
 Property Descriptions
 Property Descriptions
 ---------------------
 ---------------------
@@ -486,7 +498,7 @@ Each particle's initial color. If the :ref:`Particles2D<class_Particles2D>`'s ``
 | *Getter* | get_color_ramp()      |
 | *Getter* | get_color_ramp()      |
 +----------+-----------------------+
 +----------+-----------------------+
 
 
-Each particle's color will vary along this :ref:`GradientTexture<class_GradientTexture>`.
+Each particle's color will vary along this :ref:`GradientTexture<class_GradientTexture>` over its lifetime (multiplied with :ref:`color<class_ParticlesMaterial_property_color>`).
 
 
 ----
 ----
 
 
@@ -622,6 +634,64 @@ Particles will be emitted at positions determined by sampling this texture at a
 
 
 ----
 ----
 
 
+.. _class_ParticlesMaterial_property_emission_ring_axis:
+
+- :ref:`Vector3<class_Vector3>` **emission_ring_axis**
+
++-----------+-------------------------------+
+| *Default* | ``Vector3( 0, 0, 1 )``        |
++-----------+-------------------------------+
+| *Setter*  | set_emission_ring_axis(value) |
++-----------+-------------------------------+
+| *Getter*  | get_emission_ring_axis()      |
++-----------+-------------------------------+
+
+The axis of the ring when using the emitter :ref:`EMISSION_SHAPE_RING<class_ParticlesMaterial_constant_EMISSION_SHAPE_RING>`.
+
+----
+
+.. _class_ParticlesMaterial_property_emission_ring_height:
+
+- :ref:`float<class_float>` **emission_ring_height**
+
++----------+---------------------------------+
+| *Setter* | set_emission_ring_height(value) |
++----------+---------------------------------+
+| *Getter* | get_emission_ring_height()      |
++----------+---------------------------------+
+
+The height of the ring when using the emitter :ref:`EMISSION_SHAPE_RING<class_ParticlesMaterial_constant_EMISSION_SHAPE_RING>`.
+
+----
+
+.. _class_ParticlesMaterial_property_emission_ring_inner_radius:
+
+- :ref:`float<class_float>` **emission_ring_inner_radius**
+
++----------+---------------------------------------+
+| *Setter* | set_emission_ring_inner_radius(value) |
++----------+---------------------------------------+
+| *Getter* | get_emission_ring_inner_radius()      |
++----------+---------------------------------------+
+
+The inner radius of the ring when using the emitter :ref:`EMISSION_SHAPE_RING<class_ParticlesMaterial_constant_EMISSION_SHAPE_RING>`.
+
+----
+
+.. _class_ParticlesMaterial_property_emission_ring_radius:
+
+- :ref:`float<class_float>` **emission_ring_radius**
+
++----------+---------------------------------+
+| *Setter* | set_emission_ring_radius(value) |
++----------+---------------------------------+
+| *Getter* | get_emission_ring_radius()      |
++----------+---------------------------------+
+
+The radius of the ring when using the emitter :ref:`EMISSION_SHAPE_RING<class_ParticlesMaterial_constant_EMISSION_SHAPE_RING>`.
+
+----
+
 .. _class_ParticlesMaterial_property_emission_shape:
 .. _class_ParticlesMaterial_property_emission_shape:
 
 
 - :ref:`EmissionShape<enum_ParticlesMaterial_EmissionShape>` **emission_shape**
 - :ref:`EmissionShape<enum_ParticlesMaterial_EmissionShape>` **emission_shape**
@@ -712,7 +782,7 @@ If ``true``, particles rotate around Y axis by :ref:`angle<class_ParticlesMateri
 | *Getter*  | get_flatness()      |
 | *Getter*  | get_flatness()      |
 +-----------+---------------------+
 +-----------+---------------------+
 
 
-Amount of :ref:`spread<class_ParticlesMaterial_property_spread>` in Y/Z plane. A value of ``1`` restricts particles to X/Z plane.
+Amount of :ref:`spread<class_ParticlesMaterial_property_spread>` along the Y axis.
 
 
 ----
 ----
 
 
@@ -1020,7 +1090,7 @@ Scale randomness ratio.
 | *Getter*  | get_spread()      |
 | *Getter*  | get_spread()      |
 +-----------+-------------------+
 +-----------+-------------------+
 
 
-Each particle's initial direction range from ``+spread`` to ``-spread`` degrees. Applied to X/Z plane and Y/Z planes.
+Each particle's initial direction range from ``+spread`` to ``-spread`` degrees.
 
 
 ----
 ----
 
 

+ 216 - 206
classes/class_physics2dserver.rst

@@ -21,211 +21,213 @@ Physics2DServer is the server responsible for all 2D physics. It can create many
 Methods
 Methods
 -------
 -------
 
 
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`area_add_shape<class_Physics2DServer_method_area_add_shape>` **(** :ref:`RID<class_RID>` area, :ref:`RID<class_RID>` shape, :ref:`Transform2D<class_Transform2D>` transform=Transform2D( 1, 0, 0, 1, 0, 0 ), :ref:`bool<class_bool>` disabled=false **)**                                                                                                 |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`area_attach_canvas_instance_id<class_Physics2DServer_method_area_attach_canvas_instance_id>` **(** :ref:`RID<class_RID>` area, :ref:`int<class_int>` id **)**                                                                                                                                                                                             |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`area_attach_object_instance_id<class_Physics2DServer_method_area_attach_object_instance_id>` **(** :ref:`RID<class_RID>` area, :ref:`int<class_int>` id **)**                                                                                                                                                                                             |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`area_clear_shapes<class_Physics2DServer_method_area_clear_shapes>` **(** :ref:`RID<class_RID>` area **)**                                                                                                                                                                                                                                                 |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                                                    | :ref:`area_create<class_Physics2DServer_method_area_create>` **(** **)**                                                                                                                                                                                                                                                                                        |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                                    | :ref:`area_get_canvas_instance_id<class_Physics2DServer_method_area_get_canvas_instance_id>` **(** :ref:`RID<class_RID>` area **)** |const|                                                                                                                                                                                                                     |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                                    | :ref:`area_get_object_instance_id<class_Physics2DServer_method_area_get_object_instance_id>` **(** :ref:`RID<class_RID>` area **)** |const|                                                                                                                                                                                                                     |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Variant<class_Variant>`                                            | :ref:`area_get_param<class_Physics2DServer_method_area_get_param>` **(** :ref:`RID<class_RID>` area, :ref:`AreaParameter<enum_Physics2DServer_AreaParameter>` param **)** |const|                                                                                                                                                                               |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                                                    | :ref:`area_get_shape<class_Physics2DServer_method_area_get_shape>` **(** :ref:`RID<class_RID>` area, :ref:`int<class_int>` shape_idx **)** |const|                                                                                                                                                                                                              |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                                    | :ref:`area_get_shape_count<class_Physics2DServer_method_area_get_shape_count>` **(** :ref:`RID<class_RID>` area **)** |const|                                                                                                                                                                                                                                   |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Transform2D<class_Transform2D>`                                    | :ref:`area_get_shape_transform<class_Physics2DServer_method_area_get_shape_transform>` **(** :ref:`RID<class_RID>` area, :ref:`int<class_int>` shape_idx **)** |const|                                                                                                                                                                                          |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                                                    | :ref:`area_get_space<class_Physics2DServer_method_area_get_space>` **(** :ref:`RID<class_RID>` area **)** |const|                                                                                                                                                                                                                                               |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`AreaSpaceOverrideMode<enum_Physics2DServer_AreaSpaceOverrideMode>` | :ref:`area_get_space_override_mode<class_Physics2DServer_method_area_get_space_override_mode>` **(** :ref:`RID<class_RID>` area **)** |const|                                                                                                                                                                                                                   |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Transform2D<class_Transform2D>`                                    | :ref:`area_get_transform<class_Physics2DServer_method_area_get_transform>` **(** :ref:`RID<class_RID>` area **)** |const|                                                                                                                                                                                                                                       |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`area_remove_shape<class_Physics2DServer_method_area_remove_shape>` **(** :ref:`RID<class_RID>` area, :ref:`int<class_int>` shape_idx **)**                                                                                                                                                                                                                |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`area_set_area_monitor_callback<class_Physics2DServer_method_area_set_area_monitor_callback>` **(** :ref:`RID<class_RID>` area, :ref:`Object<class_Object>` receiver, :ref:`String<class_String>` method **)**                                                                                                                                             |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`area_set_collision_layer<class_Physics2DServer_method_area_set_collision_layer>` **(** :ref:`RID<class_RID>` area, :ref:`int<class_int>` layer **)**                                                                                                                                                                                                      |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`area_set_collision_mask<class_Physics2DServer_method_area_set_collision_mask>` **(** :ref:`RID<class_RID>` area, :ref:`int<class_int>` mask **)**                                                                                                                                                                                                         |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`area_set_monitor_callback<class_Physics2DServer_method_area_set_monitor_callback>` **(** :ref:`RID<class_RID>` area, :ref:`Object<class_Object>` receiver, :ref:`String<class_String>` method **)**                                                                                                                                                       |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`area_set_monitorable<class_Physics2DServer_method_area_set_monitorable>` **(** :ref:`RID<class_RID>` area, :ref:`bool<class_bool>` monitorable **)**                                                                                                                                                                                                      |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`area_set_param<class_Physics2DServer_method_area_set_param>` **(** :ref:`RID<class_RID>` area, :ref:`AreaParameter<enum_Physics2DServer_AreaParameter>` param, :ref:`Variant<class_Variant>` value **)**                                                                                                                                                  |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`area_set_shape<class_Physics2DServer_method_area_set_shape>` **(** :ref:`RID<class_RID>` area, :ref:`int<class_int>` shape_idx, :ref:`RID<class_RID>` shape **)**                                                                                                                                                                                         |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`area_set_shape_disabled<class_Physics2DServer_method_area_set_shape_disabled>` **(** :ref:`RID<class_RID>` area, :ref:`int<class_int>` shape_idx, :ref:`bool<class_bool>` disabled **)**                                                                                                                                                                  |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`area_set_shape_transform<class_Physics2DServer_method_area_set_shape_transform>` **(** :ref:`RID<class_RID>` area, :ref:`int<class_int>` shape_idx, :ref:`Transform2D<class_Transform2D>` transform **)**                                                                                                                                                 |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`area_set_space<class_Physics2DServer_method_area_set_space>` **(** :ref:`RID<class_RID>` area, :ref:`RID<class_RID>` space **)**                                                                                                                                                                                                                          |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`area_set_space_override_mode<class_Physics2DServer_method_area_set_space_override_mode>` **(** :ref:`RID<class_RID>` area, :ref:`AreaSpaceOverrideMode<enum_Physics2DServer_AreaSpaceOverrideMode>` mode **)**                                                                                                                                            |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`area_set_transform<class_Physics2DServer_method_area_set_transform>` **(** :ref:`RID<class_RID>` area, :ref:`Transform2D<class_Transform2D>` transform **)**                                                                                                                                                                                              |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`body_add_central_force<class_Physics2DServer_method_body_add_central_force>` **(** :ref:`RID<class_RID>` body, :ref:`Vector2<class_Vector2>` force **)**                                                                                                                                                                                                  |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`body_add_collision_exception<class_Physics2DServer_method_body_add_collision_exception>` **(** :ref:`RID<class_RID>` body, :ref:`RID<class_RID>` excepted_body **)**                                                                                                                                                                                      |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`body_add_force<class_Physics2DServer_method_body_add_force>` **(** :ref:`RID<class_RID>` body, :ref:`Vector2<class_Vector2>` offset, :ref:`Vector2<class_Vector2>` force **)**                                                                                                                                                                            |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`body_add_shape<class_Physics2DServer_method_body_add_shape>` **(** :ref:`RID<class_RID>` body, :ref:`RID<class_RID>` shape, :ref:`Transform2D<class_Transform2D>` transform=Transform2D( 1, 0, 0, 1, 0, 0 ), :ref:`bool<class_bool>` disabled=false **)**                                                                                                 |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`body_add_torque<class_Physics2DServer_method_body_add_torque>` **(** :ref:`RID<class_RID>` body, :ref:`float<class_float>` torque **)**                                                                                                                                                                                                                   |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`body_apply_central_impulse<class_Physics2DServer_method_body_apply_central_impulse>` **(** :ref:`RID<class_RID>` body, :ref:`Vector2<class_Vector2>` impulse **)**                                                                                                                                                                                        |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`body_apply_impulse<class_Physics2DServer_method_body_apply_impulse>` **(** :ref:`RID<class_RID>` body, :ref:`Vector2<class_Vector2>` position, :ref:`Vector2<class_Vector2>` impulse **)**                                                                                                                                                                |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`body_apply_torque_impulse<class_Physics2DServer_method_body_apply_torque_impulse>` **(** :ref:`RID<class_RID>` body, :ref:`float<class_float>` impulse **)**                                                                                                                                                                                              |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`body_attach_canvas_instance_id<class_Physics2DServer_method_body_attach_canvas_instance_id>` **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` id **)**                                                                                                                                                                                             |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`body_attach_object_instance_id<class_Physics2DServer_method_body_attach_object_instance_id>` **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` id **)**                                                                                                                                                                                             |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`body_clear_shapes<class_Physics2DServer_method_body_clear_shapes>` **(** :ref:`RID<class_RID>` body **)**                                                                                                                                                                                                                                                 |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                                                    | :ref:`body_create<class_Physics2DServer_method_body_create>` **(** **)**                                                                                                                                                                                                                                                                                        |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                                    | :ref:`body_get_canvas_instance_id<class_Physics2DServer_method_body_get_canvas_instance_id>` **(** :ref:`RID<class_RID>` body **)** |const|                                                                                                                                                                                                                     |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                                    | :ref:`body_get_collision_layer<class_Physics2DServer_method_body_get_collision_layer>` **(** :ref:`RID<class_RID>` body **)** |const|                                                                                                                                                                                                                           |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                                    | :ref:`body_get_collision_mask<class_Physics2DServer_method_body_get_collision_mask>` **(** :ref:`RID<class_RID>` body **)** |const|                                                                                                                                                                                                                             |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`CCDMode<enum_Physics2DServer_CCDMode>`                             | :ref:`body_get_continuous_collision_detection_mode<class_Physics2DServer_method_body_get_continuous_collision_detection_mode>` **(** :ref:`RID<class_RID>` body **)** |const|                                                                                                                                                                                   |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Physics2DDirectBodyState<class_Physics2DDirectBodyState>`          | :ref:`body_get_direct_state<class_Physics2DServer_method_body_get_direct_state>` **(** :ref:`RID<class_RID>` body **)**                                                                                                                                                                                                                                         |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                                    | :ref:`body_get_max_contacts_reported<class_Physics2DServer_method_body_get_max_contacts_reported>` **(** :ref:`RID<class_RID>` body **)** |const|                                                                                                                                                                                                               |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`BodyMode<enum_Physics2DServer_BodyMode>`                           | :ref:`body_get_mode<class_Physics2DServer_method_body_get_mode>` **(** :ref:`RID<class_RID>` body **)** |const|                                                                                                                                                                                                                                                 |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                                    | :ref:`body_get_object_instance_id<class_Physics2DServer_method_body_get_object_instance_id>` **(** :ref:`RID<class_RID>` body **)** |const|                                                                                                                                                                                                                     |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                                | :ref:`body_get_param<class_Physics2DServer_method_body_get_param>` **(** :ref:`RID<class_RID>` body, :ref:`BodyParameter<enum_Physics2DServer_BodyParameter>` param **)** |const|                                                                                                                                                                               |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                                                    | :ref:`body_get_shape<class_Physics2DServer_method_body_get_shape>` **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` shape_idx **)** |const|                                                                                                                                                                                                              |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                                    | :ref:`body_get_shape_count<class_Physics2DServer_method_body_get_shape_count>` **(** :ref:`RID<class_RID>` body **)** |const|                                                                                                                                                                                                                                   |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Variant<class_Variant>`                                            | :ref:`body_get_shape_metadata<class_Physics2DServer_method_body_get_shape_metadata>` **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` shape_idx **)** |const|                                                                                                                                                                                            |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Transform2D<class_Transform2D>`                                    | :ref:`body_get_shape_transform<class_Physics2DServer_method_body_get_shape_transform>` **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` shape_idx **)** |const|                                                                                                                                                                                          |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                                                    | :ref:`body_get_space<class_Physics2DServer_method_body_get_space>` **(** :ref:`RID<class_RID>` body **)** |const|                                                                                                                                                                                                                                               |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Variant<class_Variant>`                                            | :ref:`body_get_state<class_Physics2DServer_method_body_get_state>` **(** :ref:`RID<class_RID>` body, :ref:`BodyState<enum_Physics2DServer_BodyState>` state **)** |const|                                                                                                                                                                                       |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                                  | :ref:`body_is_omitting_force_integration<class_Physics2DServer_method_body_is_omitting_force_integration>` **(** :ref:`RID<class_RID>` body **)** |const|                                                                                                                                                                                                       |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`body_remove_collision_exception<class_Physics2DServer_method_body_remove_collision_exception>` **(** :ref:`RID<class_RID>` body, :ref:`RID<class_RID>` excepted_body **)**                                                                                                                                                                                |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`body_remove_shape<class_Physics2DServer_method_body_remove_shape>` **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` shape_idx **)**                                                                                                                                                                                                                |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`body_set_axis_velocity<class_Physics2DServer_method_body_set_axis_velocity>` **(** :ref:`RID<class_RID>` body, :ref:`Vector2<class_Vector2>` axis_velocity **)**                                                                                                                                                                                          |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`body_set_collision_layer<class_Physics2DServer_method_body_set_collision_layer>` **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` layer **)**                                                                                                                                                                                                      |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`body_set_collision_mask<class_Physics2DServer_method_body_set_collision_mask>` **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` mask **)**                                                                                                                                                                                                         |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`body_set_continuous_collision_detection_mode<class_Physics2DServer_method_body_set_continuous_collision_detection_mode>` **(** :ref:`RID<class_RID>` body, :ref:`CCDMode<enum_Physics2DServer_CCDMode>` mode **)**                                                                                                                                        |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`body_set_force_integration_callback<class_Physics2DServer_method_body_set_force_integration_callback>` **(** :ref:`RID<class_RID>` body, :ref:`Object<class_Object>` receiver, :ref:`String<class_String>` method, :ref:`Variant<class_Variant>` userdata=null **)**                                                                                      |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`body_set_max_contacts_reported<class_Physics2DServer_method_body_set_max_contacts_reported>` **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` amount **)**                                                                                                                                                                                         |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`body_set_mode<class_Physics2DServer_method_body_set_mode>` **(** :ref:`RID<class_RID>` body, :ref:`BodyMode<enum_Physics2DServer_BodyMode>` mode **)**                                                                                                                                                                                                    |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`body_set_omit_force_integration<class_Physics2DServer_method_body_set_omit_force_integration>` **(** :ref:`RID<class_RID>` body, :ref:`bool<class_bool>` enable **)**                                                                                                                                                                                     |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`body_set_param<class_Physics2DServer_method_body_set_param>` **(** :ref:`RID<class_RID>` body, :ref:`BodyParameter<enum_Physics2DServer_BodyParameter>` param, :ref:`float<class_float>` value **)**                                                                                                                                                      |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`body_set_shape<class_Physics2DServer_method_body_set_shape>` **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` shape_idx, :ref:`RID<class_RID>` shape **)**                                                                                                                                                                                         |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`body_set_shape_as_one_way_collision<class_Physics2DServer_method_body_set_shape_as_one_way_collision>` **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` shape_idx, :ref:`bool<class_bool>` enable, :ref:`float<class_float>` margin **)**                                                                                                          |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`body_set_shape_disabled<class_Physics2DServer_method_body_set_shape_disabled>` **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` shape_idx, :ref:`bool<class_bool>` disabled **)**                                                                                                                                                                  |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`body_set_shape_metadata<class_Physics2DServer_method_body_set_shape_metadata>` **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` shape_idx, :ref:`Variant<class_Variant>` metadata **)**                                                                                                                                                            |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`body_set_shape_transform<class_Physics2DServer_method_body_set_shape_transform>` **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` shape_idx, :ref:`Transform2D<class_Transform2D>` transform **)**                                                                                                                                                 |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`body_set_space<class_Physics2DServer_method_body_set_space>` **(** :ref:`RID<class_RID>` body, :ref:`RID<class_RID>` space **)**                                                                                                                                                                                                                          |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`body_set_state<class_Physics2DServer_method_body_set_state>` **(** :ref:`RID<class_RID>` body, :ref:`BodyState<enum_Physics2DServer_BodyState>` state, :ref:`Variant<class_Variant>` value **)**                                                                                                                                                          |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                                  | :ref:`body_test_motion<class_Physics2DServer_method_body_test_motion>` **(** :ref:`RID<class_RID>` body, :ref:`Transform2D<class_Transform2D>` from, :ref:`Vector2<class_Vector2>` motion, :ref:`bool<class_bool>` infinite_inertia, :ref:`float<class_float>` margin=0.08, :ref:`Physics2DTestMotionResult<class_Physics2DTestMotionResult>` result=null **)** |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                                                    | :ref:`capsule_shape_create<class_Physics2DServer_method_capsule_shape_create>` **(** **)**                                                                                                                                                                                                                                                                      |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                                                    | :ref:`circle_shape_create<class_Physics2DServer_method_circle_shape_create>` **(** **)**                                                                                                                                                                                                                                                                        |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                                                    | :ref:`concave_polygon_shape_create<class_Physics2DServer_method_concave_polygon_shape_create>` **(** **)**                                                                                                                                                                                                                                                      |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                                                    | :ref:`convex_polygon_shape_create<class_Physics2DServer_method_convex_polygon_shape_create>` **(** **)**                                                                                                                                                                                                                                                        |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                                                    | :ref:`damped_spring_joint_create<class_Physics2DServer_method_damped_spring_joint_create>` **(** :ref:`Vector2<class_Vector2>` anchor_a, :ref:`Vector2<class_Vector2>` anchor_b, :ref:`RID<class_RID>` body_a, :ref:`RID<class_RID>` body_b **)**                                                                                                               |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                                | :ref:`damped_string_joint_get_param<class_Physics2DServer_method_damped_string_joint_get_param>` **(** :ref:`RID<class_RID>` joint, :ref:`DampedStringParam<enum_Physics2DServer_DampedStringParam>` param **)** |const|                                                                                                                                        |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`damped_string_joint_set_param<class_Physics2DServer_method_damped_string_joint_set_param>` **(** :ref:`RID<class_RID>` joint, :ref:`DampedStringParam<enum_Physics2DServer_DampedStringParam>` param, :ref:`float<class_float>` value **)**                                                                                                               |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`free_rid<class_Physics2DServer_method_free_rid>` **(** :ref:`RID<class_RID>` rid **)**                                                                                                                                                                                                                                                                    |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                                    | :ref:`get_process_info<class_Physics2DServer_method_get_process_info>` **(** :ref:`ProcessInfo<enum_Physics2DServer_ProcessInfo>` process_info **)**                                                                                                                                                                                                            |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                                                    | :ref:`groove_joint_create<class_Physics2DServer_method_groove_joint_create>` **(** :ref:`Vector2<class_Vector2>` groove1_a, :ref:`Vector2<class_Vector2>` groove2_a, :ref:`Vector2<class_Vector2>` anchor_b, :ref:`RID<class_RID>` body_a, :ref:`RID<class_RID>` body_b **)**                                                                                   |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                                | :ref:`joint_get_param<class_Physics2DServer_method_joint_get_param>` **(** :ref:`RID<class_RID>` joint, :ref:`JointParam<enum_Physics2DServer_JointParam>` param **)** |const|                                                                                                                                                                                  |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`JointType<enum_Physics2DServer_JointType>`                         | :ref:`joint_get_type<class_Physics2DServer_method_joint_get_type>` **(** :ref:`RID<class_RID>` joint **)** |const|                                                                                                                                                                                                                                              |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`joint_set_param<class_Physics2DServer_method_joint_set_param>` **(** :ref:`RID<class_RID>` joint, :ref:`JointParam<enum_Physics2DServer_JointParam>` param, :ref:`float<class_float>` value **)**                                                                                                                                                         |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                                                    | :ref:`line_shape_create<class_Physics2DServer_method_line_shape_create>` **(** **)**                                                                                                                                                                                                                                                                            |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                                                    | :ref:`pin_joint_create<class_Physics2DServer_method_pin_joint_create>` **(** :ref:`Vector2<class_Vector2>` anchor, :ref:`RID<class_RID>` body_a, :ref:`RID<class_RID>` body_b **)**                                                                                                                                                                             |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                                                    | :ref:`ray_shape_create<class_Physics2DServer_method_ray_shape_create>` **(** **)**                                                                                                                                                                                                                                                                              |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                                                    | :ref:`rectangle_shape_create<class_Physics2DServer_method_rectangle_shape_create>` **(** **)**                                                                                                                                                                                                                                                                  |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                                                    | :ref:`segment_shape_create<class_Physics2DServer_method_segment_shape_create>` **(** **)**                                                                                                                                                                                                                                                                      |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`set_active<class_Physics2DServer_method_set_active>` **(** :ref:`bool<class_bool>` active **)**                                                                                                                                                                                                                                                           |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Variant<class_Variant>`                                            | :ref:`shape_get_data<class_Physics2DServer_method_shape_get_data>` **(** :ref:`RID<class_RID>` shape **)** |const|                                                                                                                                                                                                                                              |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`ShapeType<enum_Physics2DServer_ShapeType>`                         | :ref:`shape_get_type<class_Physics2DServer_method_shape_get_type>` **(** :ref:`RID<class_RID>` shape **)** |const|                                                                                                                                                                                                                                              |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`shape_set_data<class_Physics2DServer_method_shape_set_data>` **(** :ref:`RID<class_RID>` shape, :ref:`Variant<class_Variant>` data **)**                                                                                                                                                                                                                  |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                                                    | :ref:`space_create<class_Physics2DServer_method_space_create>` **(** **)**                                                                                                                                                                                                                                                                                      |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Physics2DDirectSpaceState<class_Physics2DDirectSpaceState>`        | :ref:`space_get_direct_state<class_Physics2DServer_method_space_get_direct_state>` **(** :ref:`RID<class_RID>` space **)**                                                                                                                                                                                                                                      |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                                | :ref:`space_get_param<class_Physics2DServer_method_space_get_param>` **(** :ref:`RID<class_RID>` space, :ref:`SpaceParameter<enum_Physics2DServer_SpaceParameter>` param **)** |const|                                                                                                                                                                          |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                                  | :ref:`space_is_active<class_Physics2DServer_method_space_is_active>` **(** :ref:`RID<class_RID>` space **)** |const|                                                                                                                                                                                                                                            |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`space_set_active<class_Physics2DServer_method_space_set_active>` **(** :ref:`RID<class_RID>` space, :ref:`bool<class_bool>` active **)**                                                                                                                                                                                                                  |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                     | :ref:`space_set_param<class_Physics2DServer_method_space_set_param>` **(** :ref:`RID<class_RID>` space, :ref:`SpaceParameter<enum_Physics2DServer_SpaceParameter>` param, :ref:`float<class_float>` value **)**                                                                                                                                                 |
-+--------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`area_add_shape<class_Physics2DServer_method_area_add_shape>` **(** :ref:`RID<class_RID>` area, :ref:`RID<class_RID>` shape, :ref:`Transform2D<class_Transform2D>` transform=Transform2D( 1, 0, 0, 1, 0, 0 ), :ref:`bool<class_bool>` disabled=false **)**                                                                                                                                                                                              |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`area_attach_canvas_instance_id<class_Physics2DServer_method_area_attach_canvas_instance_id>` **(** :ref:`RID<class_RID>` area, :ref:`int<class_int>` id **)**                                                                                                                                                                                                                                                                                          |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`area_attach_object_instance_id<class_Physics2DServer_method_area_attach_object_instance_id>` **(** :ref:`RID<class_RID>` area, :ref:`int<class_int>` id **)**                                                                                                                                                                                                                                                                                          |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`area_clear_shapes<class_Physics2DServer_method_area_clear_shapes>` **(** :ref:`RID<class_RID>` area **)**                                                                                                                                                                                                                                                                                                                                              |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                                                    | :ref:`area_create<class_Physics2DServer_method_area_create>` **(** **)**                                                                                                                                                                                                                                                                                                                                                                                     |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                                    | :ref:`area_get_canvas_instance_id<class_Physics2DServer_method_area_get_canvas_instance_id>` **(** :ref:`RID<class_RID>` area **)** |const|                                                                                                                                                                                                                                                                                                                  |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                                    | :ref:`area_get_object_instance_id<class_Physics2DServer_method_area_get_object_instance_id>` **(** :ref:`RID<class_RID>` area **)** |const|                                                                                                                                                                                                                                                                                                                  |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Variant<class_Variant>`                                            | :ref:`area_get_param<class_Physics2DServer_method_area_get_param>` **(** :ref:`RID<class_RID>` area, :ref:`AreaParameter<enum_Physics2DServer_AreaParameter>` param **)** |const|                                                                                                                                                                                                                                                                            |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                                                    | :ref:`area_get_shape<class_Physics2DServer_method_area_get_shape>` **(** :ref:`RID<class_RID>` area, :ref:`int<class_int>` shape_idx **)** |const|                                                                                                                                                                                                                                                                                                           |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                                    | :ref:`area_get_shape_count<class_Physics2DServer_method_area_get_shape_count>` **(** :ref:`RID<class_RID>` area **)** |const|                                                                                                                                                                                                                                                                                                                                |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Transform2D<class_Transform2D>`                                    | :ref:`area_get_shape_transform<class_Physics2DServer_method_area_get_shape_transform>` **(** :ref:`RID<class_RID>` area, :ref:`int<class_int>` shape_idx **)** |const|                                                                                                                                                                                                                                                                                       |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                                                    | :ref:`area_get_space<class_Physics2DServer_method_area_get_space>` **(** :ref:`RID<class_RID>` area **)** |const|                                                                                                                                                                                                                                                                                                                                            |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`AreaSpaceOverrideMode<enum_Physics2DServer_AreaSpaceOverrideMode>` | :ref:`area_get_space_override_mode<class_Physics2DServer_method_area_get_space_override_mode>` **(** :ref:`RID<class_RID>` area **)** |const|                                                                                                                                                                                                                                                                                                                |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Transform2D<class_Transform2D>`                                    | :ref:`area_get_transform<class_Physics2DServer_method_area_get_transform>` **(** :ref:`RID<class_RID>` area **)** |const|                                                                                                                                                                                                                                                                                                                                    |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`area_remove_shape<class_Physics2DServer_method_area_remove_shape>` **(** :ref:`RID<class_RID>` area, :ref:`int<class_int>` shape_idx **)**                                                                                                                                                                                                                                                                                                             |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`area_set_area_monitor_callback<class_Physics2DServer_method_area_set_area_monitor_callback>` **(** :ref:`RID<class_RID>` area, :ref:`Object<class_Object>` receiver, :ref:`String<class_String>` method **)**                                                                                                                                                                                                                                          |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`area_set_collision_layer<class_Physics2DServer_method_area_set_collision_layer>` **(** :ref:`RID<class_RID>` area, :ref:`int<class_int>` layer **)**                                                                                                                                                                                                                                                                                                   |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`area_set_collision_mask<class_Physics2DServer_method_area_set_collision_mask>` **(** :ref:`RID<class_RID>` area, :ref:`int<class_int>` mask **)**                                                                                                                                                                                                                                                                                                      |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`area_set_monitor_callback<class_Physics2DServer_method_area_set_monitor_callback>` **(** :ref:`RID<class_RID>` area, :ref:`Object<class_Object>` receiver, :ref:`String<class_String>` method **)**                                                                                                                                                                                                                                                    |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`area_set_monitorable<class_Physics2DServer_method_area_set_monitorable>` **(** :ref:`RID<class_RID>` area, :ref:`bool<class_bool>` monitorable **)**                                                                                                                                                                                                                                                                                                   |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`area_set_param<class_Physics2DServer_method_area_set_param>` **(** :ref:`RID<class_RID>` area, :ref:`AreaParameter<enum_Physics2DServer_AreaParameter>` param, :ref:`Variant<class_Variant>` value **)**                                                                                                                                                                                                                                               |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`area_set_shape<class_Physics2DServer_method_area_set_shape>` **(** :ref:`RID<class_RID>` area, :ref:`int<class_int>` shape_idx, :ref:`RID<class_RID>` shape **)**                                                                                                                                                                                                                                                                                      |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`area_set_shape_disabled<class_Physics2DServer_method_area_set_shape_disabled>` **(** :ref:`RID<class_RID>` area, :ref:`int<class_int>` shape_idx, :ref:`bool<class_bool>` disabled **)**                                                                                                                                                                                                                                                               |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`area_set_shape_transform<class_Physics2DServer_method_area_set_shape_transform>` **(** :ref:`RID<class_RID>` area, :ref:`int<class_int>` shape_idx, :ref:`Transform2D<class_Transform2D>` transform **)**                                                                                                                                                                                                                                              |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`area_set_space<class_Physics2DServer_method_area_set_space>` **(** :ref:`RID<class_RID>` area, :ref:`RID<class_RID>` space **)**                                                                                                                                                                                                                                                                                                                       |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`area_set_space_override_mode<class_Physics2DServer_method_area_set_space_override_mode>` **(** :ref:`RID<class_RID>` area, :ref:`AreaSpaceOverrideMode<enum_Physics2DServer_AreaSpaceOverrideMode>` mode **)**                                                                                                                                                                                                                                         |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`area_set_transform<class_Physics2DServer_method_area_set_transform>` **(** :ref:`RID<class_RID>` area, :ref:`Transform2D<class_Transform2D>` transform **)**                                                                                                                                                                                                                                                                                           |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`body_add_central_force<class_Physics2DServer_method_body_add_central_force>` **(** :ref:`RID<class_RID>` body, :ref:`Vector2<class_Vector2>` force **)**                                                                                                                                                                                                                                                                                               |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`body_add_collision_exception<class_Physics2DServer_method_body_add_collision_exception>` **(** :ref:`RID<class_RID>` body, :ref:`RID<class_RID>` excepted_body **)**                                                                                                                                                                                                                                                                                   |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`body_add_force<class_Physics2DServer_method_body_add_force>` **(** :ref:`RID<class_RID>` body, :ref:`Vector2<class_Vector2>` offset, :ref:`Vector2<class_Vector2>` force **)**                                                                                                                                                                                                                                                                         |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`body_add_shape<class_Physics2DServer_method_body_add_shape>` **(** :ref:`RID<class_RID>` body, :ref:`RID<class_RID>` shape, :ref:`Transform2D<class_Transform2D>` transform=Transform2D( 1, 0, 0, 1, 0, 0 ), :ref:`bool<class_bool>` disabled=false **)**                                                                                                                                                                                              |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`body_add_torque<class_Physics2DServer_method_body_add_torque>` **(** :ref:`RID<class_RID>` body, :ref:`float<class_float>` torque **)**                                                                                                                                                                                                                                                                                                                |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`body_apply_central_impulse<class_Physics2DServer_method_body_apply_central_impulse>` **(** :ref:`RID<class_RID>` body, :ref:`Vector2<class_Vector2>` impulse **)**                                                                                                                                                                                                                                                                                     |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`body_apply_impulse<class_Physics2DServer_method_body_apply_impulse>` **(** :ref:`RID<class_RID>` body, :ref:`Vector2<class_Vector2>` position, :ref:`Vector2<class_Vector2>` impulse **)**                                                                                                                                                                                                                                                             |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`body_apply_torque_impulse<class_Physics2DServer_method_body_apply_torque_impulse>` **(** :ref:`RID<class_RID>` body, :ref:`float<class_float>` impulse **)**                                                                                                                                                                                                                                                                                           |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`body_attach_canvas_instance_id<class_Physics2DServer_method_body_attach_canvas_instance_id>` **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` id **)**                                                                                                                                                                                                                                                                                          |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`body_attach_object_instance_id<class_Physics2DServer_method_body_attach_object_instance_id>` **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` id **)**                                                                                                                                                                                                                                                                                          |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`body_clear_shapes<class_Physics2DServer_method_body_clear_shapes>` **(** :ref:`RID<class_RID>` body **)**                                                                                                                                                                                                                                                                                                                                              |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                                                    | :ref:`body_create<class_Physics2DServer_method_body_create>` **(** **)**                                                                                                                                                                                                                                                                                                                                                                                     |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                                    | :ref:`body_get_canvas_instance_id<class_Physics2DServer_method_body_get_canvas_instance_id>` **(** :ref:`RID<class_RID>` body **)** |const|                                                                                                                                                                                                                                                                                                                  |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                                    | :ref:`body_get_collision_layer<class_Physics2DServer_method_body_get_collision_layer>` **(** :ref:`RID<class_RID>` body **)** |const|                                                                                                                                                                                                                                                                                                                        |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                                    | :ref:`body_get_collision_mask<class_Physics2DServer_method_body_get_collision_mask>` **(** :ref:`RID<class_RID>` body **)** |const|                                                                                                                                                                                                                                                                                                                          |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`CCDMode<enum_Physics2DServer_CCDMode>`                             | :ref:`body_get_continuous_collision_detection_mode<class_Physics2DServer_method_body_get_continuous_collision_detection_mode>` **(** :ref:`RID<class_RID>` body **)** |const|                                                                                                                                                                                                                                                                                |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Physics2DDirectBodyState<class_Physics2DDirectBodyState>`          | :ref:`body_get_direct_state<class_Physics2DServer_method_body_get_direct_state>` **(** :ref:`RID<class_RID>` body **)**                                                                                                                                                                                                                                                                                                                                      |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                                    | :ref:`body_get_max_contacts_reported<class_Physics2DServer_method_body_get_max_contacts_reported>` **(** :ref:`RID<class_RID>` body **)** |const|                                                                                                                                                                                                                                                                                                            |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`BodyMode<enum_Physics2DServer_BodyMode>`                           | :ref:`body_get_mode<class_Physics2DServer_method_body_get_mode>` **(** :ref:`RID<class_RID>` body **)** |const|                                                                                                                                                                                                                                                                                                                                              |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                                    | :ref:`body_get_object_instance_id<class_Physics2DServer_method_body_get_object_instance_id>` **(** :ref:`RID<class_RID>` body **)** |const|                                                                                                                                                                                                                                                                                                                  |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                                                | :ref:`body_get_param<class_Physics2DServer_method_body_get_param>` **(** :ref:`RID<class_RID>` body, :ref:`BodyParameter<enum_Physics2DServer_BodyParameter>` param **)** |const|                                                                                                                                                                                                                                                                            |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                                                    | :ref:`body_get_shape<class_Physics2DServer_method_body_get_shape>` **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` shape_idx **)** |const|                                                                                                                                                                                                                                                                                                           |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                                    | :ref:`body_get_shape_count<class_Physics2DServer_method_body_get_shape_count>` **(** :ref:`RID<class_RID>` body **)** |const|                                                                                                                                                                                                                                                                                                                                |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Variant<class_Variant>`                                            | :ref:`body_get_shape_metadata<class_Physics2DServer_method_body_get_shape_metadata>` **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` shape_idx **)** |const|                                                                                                                                                                                                                                                                                         |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Transform2D<class_Transform2D>`                                    | :ref:`body_get_shape_transform<class_Physics2DServer_method_body_get_shape_transform>` **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` shape_idx **)** |const|                                                                                                                                                                                                                                                                                       |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                                                    | :ref:`body_get_space<class_Physics2DServer_method_body_get_space>` **(** :ref:`RID<class_RID>` body **)** |const|                                                                                                                                                                                                                                                                                                                                            |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Variant<class_Variant>`                                            | :ref:`body_get_state<class_Physics2DServer_method_body_get_state>` **(** :ref:`RID<class_RID>` body, :ref:`BodyState<enum_Physics2DServer_BodyState>` state **)** |const|                                                                                                                                                                                                                                                                                    |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                                  | :ref:`body_is_omitting_force_integration<class_Physics2DServer_method_body_is_omitting_force_integration>` **(** :ref:`RID<class_RID>` body **)** |const|                                                                                                                                                                                                                                                                                                    |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`body_remove_collision_exception<class_Physics2DServer_method_body_remove_collision_exception>` **(** :ref:`RID<class_RID>` body, :ref:`RID<class_RID>` excepted_body **)**                                                                                                                                                                                                                                                                             |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`body_remove_shape<class_Physics2DServer_method_body_remove_shape>` **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` shape_idx **)**                                                                                                                                                                                                                                                                                                             |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`body_set_axis_velocity<class_Physics2DServer_method_body_set_axis_velocity>` **(** :ref:`RID<class_RID>` body, :ref:`Vector2<class_Vector2>` axis_velocity **)**                                                                                                                                                                                                                                                                                       |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`body_set_collision_layer<class_Physics2DServer_method_body_set_collision_layer>` **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` layer **)**                                                                                                                                                                                                                                                                                                   |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`body_set_collision_mask<class_Physics2DServer_method_body_set_collision_mask>` **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` mask **)**                                                                                                                                                                                                                                                                                                      |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`body_set_continuous_collision_detection_mode<class_Physics2DServer_method_body_set_continuous_collision_detection_mode>` **(** :ref:`RID<class_RID>` body, :ref:`CCDMode<enum_Physics2DServer_CCDMode>` mode **)**                                                                                                                                                                                                                                     |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`body_set_force_integration_callback<class_Physics2DServer_method_body_set_force_integration_callback>` **(** :ref:`RID<class_RID>` body, :ref:`Object<class_Object>` receiver, :ref:`String<class_String>` method, :ref:`Variant<class_Variant>` userdata=null **)**                                                                                                                                                                                   |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`body_set_max_contacts_reported<class_Physics2DServer_method_body_set_max_contacts_reported>` **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` amount **)**                                                                                                                                                                                                                                                                                      |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`body_set_mode<class_Physics2DServer_method_body_set_mode>` **(** :ref:`RID<class_RID>` body, :ref:`BodyMode<enum_Physics2DServer_BodyMode>` mode **)**                                                                                                                                                                                                                                                                                                 |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`body_set_omit_force_integration<class_Physics2DServer_method_body_set_omit_force_integration>` **(** :ref:`RID<class_RID>` body, :ref:`bool<class_bool>` enable **)**                                                                                                                                                                                                                                                                                  |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`body_set_param<class_Physics2DServer_method_body_set_param>` **(** :ref:`RID<class_RID>` body, :ref:`BodyParameter<enum_Physics2DServer_BodyParameter>` param, :ref:`float<class_float>` value **)**                                                                                                                                                                                                                                                   |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`body_set_shape<class_Physics2DServer_method_body_set_shape>` **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` shape_idx, :ref:`RID<class_RID>` shape **)**                                                                                                                                                                                                                                                                                      |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`body_set_shape_as_one_way_collision<class_Physics2DServer_method_body_set_shape_as_one_way_collision>` **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` shape_idx, :ref:`bool<class_bool>` enable, :ref:`float<class_float>` margin **)**                                                                                                                                                                                                       |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`body_set_shape_disabled<class_Physics2DServer_method_body_set_shape_disabled>` **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` shape_idx, :ref:`bool<class_bool>` disabled **)**                                                                                                                                                                                                                                                               |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`body_set_shape_metadata<class_Physics2DServer_method_body_set_shape_metadata>` **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` shape_idx, :ref:`Variant<class_Variant>` metadata **)**                                                                                                                                                                                                                                                         |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`body_set_shape_transform<class_Physics2DServer_method_body_set_shape_transform>` **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` shape_idx, :ref:`Transform2D<class_Transform2D>` transform **)**                                                                                                                                                                                                                                              |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`body_set_space<class_Physics2DServer_method_body_set_space>` **(** :ref:`RID<class_RID>` body, :ref:`RID<class_RID>` space **)**                                                                                                                                                                                                                                                                                                                       |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`body_set_state<class_Physics2DServer_method_body_set_state>` **(** :ref:`RID<class_RID>` body, :ref:`BodyState<enum_Physics2DServer_BodyState>` state, :ref:`Variant<class_Variant>` value **)**                                                                                                                                                                                                                                                       |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                                  | :ref:`body_test_motion<class_Physics2DServer_method_body_test_motion>` **(** :ref:`RID<class_RID>` body, :ref:`Transform2D<class_Transform2D>` from, :ref:`Vector2<class_Vector2>` motion, :ref:`bool<class_bool>` infinite_inertia, :ref:`float<class_float>` margin=0.08, :ref:`Physics2DTestMotionResult<class_Physics2DTestMotionResult>` result=null, :ref:`bool<class_bool>` exclude_raycast_shapes=true, :ref:`Array<class_Array>` exclude=[  ] **)** |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                                                    | :ref:`capsule_shape_create<class_Physics2DServer_method_capsule_shape_create>` **(** **)**                                                                                                                                                                                                                                                                                                                                                                   |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                                                    | :ref:`circle_shape_create<class_Physics2DServer_method_circle_shape_create>` **(** **)**                                                                                                                                                                                                                                                                                                                                                                     |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                                                    | :ref:`concave_polygon_shape_create<class_Physics2DServer_method_concave_polygon_shape_create>` **(** **)**                                                                                                                                                                                                                                                                                                                                                   |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                                                    | :ref:`convex_polygon_shape_create<class_Physics2DServer_method_convex_polygon_shape_create>` **(** **)**                                                                                                                                                                                                                                                                                                                                                     |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                                                    | :ref:`damped_spring_joint_create<class_Physics2DServer_method_damped_spring_joint_create>` **(** :ref:`Vector2<class_Vector2>` anchor_a, :ref:`Vector2<class_Vector2>` anchor_b, :ref:`RID<class_RID>` body_a, :ref:`RID<class_RID>` body_b **)**                                                                                                                                                                                                            |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                                                | :ref:`damped_string_joint_get_param<class_Physics2DServer_method_damped_string_joint_get_param>` **(** :ref:`RID<class_RID>` joint, :ref:`DampedStringParam<enum_Physics2DServer_DampedStringParam>` param **)** |const|                                                                                                                                                                                                                                     |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`damped_string_joint_set_param<class_Physics2DServer_method_damped_string_joint_set_param>` **(** :ref:`RID<class_RID>` joint, :ref:`DampedStringParam<enum_Physics2DServer_DampedStringParam>` param, :ref:`float<class_float>` value **)**                                                                                                                                                                                                            |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`free_rid<class_Physics2DServer_method_free_rid>` **(** :ref:`RID<class_RID>` rid **)**                                                                                                                                                                                                                                                                                                                                                                 |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                                    | :ref:`get_process_info<class_Physics2DServer_method_get_process_info>` **(** :ref:`ProcessInfo<enum_Physics2DServer_ProcessInfo>` process_info **)**                                                                                                                                                                                                                                                                                                         |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                                                    | :ref:`groove_joint_create<class_Physics2DServer_method_groove_joint_create>` **(** :ref:`Vector2<class_Vector2>` groove1_a, :ref:`Vector2<class_Vector2>` groove2_a, :ref:`Vector2<class_Vector2>` anchor_b, :ref:`RID<class_RID>` body_a, :ref:`RID<class_RID>` body_b **)**                                                                                                                                                                                |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                                                | :ref:`joint_get_param<class_Physics2DServer_method_joint_get_param>` **(** :ref:`RID<class_RID>` joint, :ref:`JointParam<enum_Physics2DServer_JointParam>` param **)** |const|                                                                                                                                                                                                                                                                               |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`JointType<enum_Physics2DServer_JointType>`                         | :ref:`joint_get_type<class_Physics2DServer_method_joint_get_type>` **(** :ref:`RID<class_RID>` joint **)** |const|                                                                                                                                                                                                                                                                                                                                           |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`joint_set_param<class_Physics2DServer_method_joint_set_param>` **(** :ref:`RID<class_RID>` joint, :ref:`JointParam<enum_Physics2DServer_JointParam>` param, :ref:`float<class_float>` value **)**                                                                                                                                                                                                                                                      |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                                                    | :ref:`line_shape_create<class_Physics2DServer_method_line_shape_create>` **(** **)**                                                                                                                                                                                                                                                                                                                                                                         |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                                                    | :ref:`pin_joint_create<class_Physics2DServer_method_pin_joint_create>` **(** :ref:`Vector2<class_Vector2>` anchor, :ref:`RID<class_RID>` body_a, :ref:`RID<class_RID>` body_b **)**                                                                                                                                                                                                                                                                          |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                                                    | :ref:`ray_shape_create<class_Physics2DServer_method_ray_shape_create>` **(** **)**                                                                                                                                                                                                                                                                                                                                                                           |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                                                    | :ref:`rectangle_shape_create<class_Physics2DServer_method_rectangle_shape_create>` **(** **)**                                                                                                                                                                                                                                                                                                                                                               |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                                                    | :ref:`segment_shape_create<class_Physics2DServer_method_segment_shape_create>` **(** **)**                                                                                                                                                                                                                                                                                                                                                                   |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`set_active<class_Physics2DServer_method_set_active>` **(** :ref:`bool<class_bool>` active **)**                                                                                                                                                                                                                                                                                                                                                        |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`set_collision_iterations<class_Physics2DServer_method_set_collision_iterations>` **(** :ref:`int<class_int>` iterations **)**                                                                                                                                                                                                                                                                                                                          |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Variant<class_Variant>`                                            | :ref:`shape_get_data<class_Physics2DServer_method_shape_get_data>` **(** :ref:`RID<class_RID>` shape **)** |const|                                                                                                                                                                                                                                                                                                                                           |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`ShapeType<enum_Physics2DServer_ShapeType>`                         | :ref:`shape_get_type<class_Physics2DServer_method_shape_get_type>` **(** :ref:`RID<class_RID>` shape **)** |const|                                                                                                                                                                                                                                                                                                                                           |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`shape_set_data<class_Physics2DServer_method_shape_set_data>` **(** :ref:`RID<class_RID>` shape, :ref:`Variant<class_Variant>` data **)**                                                                                                                                                                                                                                                                                                               |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                                                    | :ref:`space_create<class_Physics2DServer_method_space_create>` **(** **)**                                                                                                                                                                                                                                                                                                                                                                                   |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Physics2DDirectSpaceState<class_Physics2DDirectSpaceState>`        | :ref:`space_get_direct_state<class_Physics2DServer_method_space_get_direct_state>` **(** :ref:`RID<class_RID>` space **)**                                                                                                                                                                                                                                                                                                                                   |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                                                | :ref:`space_get_param<class_Physics2DServer_method_space_get_param>` **(** :ref:`RID<class_RID>` space, :ref:`SpaceParameter<enum_Physics2DServer_SpaceParameter>` param **)** |const|                                                                                                                                                                                                                                                                       |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                                  | :ref:`space_is_active<class_Physics2DServer_method_space_is_active>` **(** :ref:`RID<class_RID>` space **)** |const|                                                                                                                                                                                                                                                                                                                                         |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`space_set_active<class_Physics2DServer_method_space_set_active>` **(** :ref:`RID<class_RID>` space, :ref:`bool<class_bool>` active **)**                                                                                                                                                                                                                                                                                                               |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                                     | :ref:`space_set_param<class_Physics2DServer_method_space_set_param>` **(** :ref:`RID<class_RID>` space, :ref:`SpaceParameter<enum_Physics2DServer_SpaceParameter>` param, :ref:`float<class_float>` value **)**                                                                                                                                                                                                                                              |
++--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 
 Enumerations
 Enumerations
 ------------
 ------------
@@ -1145,7 +1147,7 @@ Note that the method doesn't take effect immediately. The state will change on t
 
 
 .. _class_Physics2DServer_method_body_test_motion:
 .. _class_Physics2DServer_method_body_test_motion:
 
 
-- :ref:`bool<class_bool>` **body_test_motion** **(** :ref:`RID<class_RID>` body, :ref:`Transform2D<class_Transform2D>` from, :ref:`Vector2<class_Vector2>` motion, :ref:`bool<class_bool>` infinite_inertia, :ref:`float<class_float>` margin=0.08, :ref:`Physics2DTestMotionResult<class_Physics2DTestMotionResult>` result=null **)**
+- :ref:`bool<class_bool>` **body_test_motion** **(** :ref:`RID<class_RID>` body, :ref:`Transform2D<class_Transform2D>` from, :ref:`Vector2<class_Vector2>` motion, :ref:`bool<class_bool>` infinite_inertia, :ref:`float<class_float>` margin=0.08, :ref:`Physics2DTestMotionResult<class_Physics2DTestMotionResult>` result=null, :ref:`bool<class_bool>` exclude_raycast_shapes=true, :ref:`Array<class_Array>` exclude=[  ] **)**
 
 
 Returns ``true`` if a collision would result from moving in the given direction from a given point in space. Margin increases the size of the shapes involved in the collision detection. :ref:`Physics2DTestMotionResult<class_Physics2DTestMotionResult>` can be passed to return additional information in.
 Returns ``true`` if a collision would result from moving in the given direction from a given point in space. Margin increases the size of the shapes involved in the collision detection. :ref:`Physics2DTestMotionResult<class_Physics2DTestMotionResult>` can be passed to return additional information in.
 
 
@@ -1287,6 +1289,14 @@ Activates or deactivates the 2D physics engine.
 
 
 ----
 ----
 
 
+.. _class_Physics2DServer_method_set_collision_iterations:
+
+- void **set_collision_iterations** **(** :ref:`int<class_int>` iterations **)**
+
+Sets the amount of iterations for calculating velocities of colliding bodies. The greater the amount of iterations, the more accurate the collisions will be. However, a greater amount of iterations requires more CPU power, which can decrease performance. The default value is ``8``.
+
+----
+
 .. _class_Physics2DServer_method_shape_get_data:
 .. _class_Physics2DServer_method_shape_get_data:
 
 
 - :ref:`Variant<class_Variant>` **shape_get_data** **(** :ref:`RID<class_RID>` shape **)** |const|
 - :ref:`Variant<class_Variant>` **shape_get_data** **(** :ref:`RID<class_RID>` shape **)** |const|

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