فهرست منبع

classref: Sync with current 3.4 branch (0ea54d07f)

Adds the 3.4.3 specific API changes in preparation for the 3.4.3-stable release.
Rémi Verschelde 3 سال پیش
والد
کامیت
c9203aa1b7

+ 7 - 1
classes/[email protected]

@@ -1466,7 +1466,13 @@ enum **JoystickList**:
 
 
 - **JOY_BUTTON_22** = **22** --- Gamepad button 22.
 - **JOY_BUTTON_22** = **22** --- Gamepad button 22.
 
 
-- **JOY_BUTTON_MAX** = **23** --- Represents the maximum number of joystick buttons supported.
+- **JOY_BUTTON_MAX** = **128** --- The maximum number of game controller buttons supported by the engine. The actual limit may be lower on specific platforms:
+
+- Android: Up to 36 buttons.
+
+- Linux: Up to 80 buttons.
+
+- Windows and macOS: Up to 128 buttons.
 
 
 - **JOY_SONY_CIRCLE** = **1** --- DualShock circle button.
 - **JOY_SONY_CIRCLE** = **1** --- DualShock circle button.
 
 

+ 29 - 35
classes/class_animationnodeoneshot.rst

@@ -28,28 +28,21 @@ Tutorials
 Properties
 Properties
 ----------
 ----------
 
 
-+---------------------------+-----------------------------------------------------------------------------------------------+-----------+
-| :ref:`bool<class_bool>`   | :ref:`autorestart<class_AnimationNodeOneShot_property_autorestart>`                           | ``false`` |
-+---------------------------+-----------------------------------------------------------------------------------------------+-----------+
-| :ref:`float<class_float>` | :ref:`autorestart_delay<class_AnimationNodeOneShot_property_autorestart_delay>`               | ``1.0``   |
-+---------------------------+-----------------------------------------------------------------------------------------------+-----------+
-| :ref:`float<class_float>` | :ref:`autorestart_random_delay<class_AnimationNodeOneShot_property_autorestart_random_delay>` | ``0.0``   |
-+---------------------------+-----------------------------------------------------------------------------------------------+-----------+
-| :ref:`float<class_float>` | :ref:`fadein_time<class_AnimationNodeOneShot_property_fadein_time>`                           | ``0.1``   |
-+---------------------------+-----------------------------------------------------------------------------------------------+-----------+
-| :ref:`float<class_float>` | :ref:`fadeout_time<class_AnimationNodeOneShot_property_fadeout_time>`                         | ``0.1``   |
-+---------------------------+-----------------------------------------------------------------------------------------------+-----------+
-| :ref:`bool<class_bool>`   | :ref:`sync<class_AnimationNodeOneShot_property_sync>`                                         | ``false`` |
-+---------------------------+-----------------------------------------------------------------------------------------------+-----------+
-
-Methods
--------
-
-+---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`MixMode<enum_AnimationNodeOneShot_MixMode>` | :ref:`get_mix_mode<class_AnimationNodeOneShot_method_get_mix_mode>` **(** **)** |const|                                                |
-+---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
-| void                                              | :ref:`set_mix_mode<class_AnimationNodeOneShot_method_set_mix_mode>` **(** :ref:`MixMode<enum_AnimationNodeOneShot_MixMode>` mode **)** |
-+---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
++---------------------------------------------------+-----------------------------------------------------------------------------------------------+-----------+
+| :ref:`bool<class_bool>`                           | :ref:`autorestart<class_AnimationNodeOneShot_property_autorestart>`                           | ``false`` |
++---------------------------------------------------+-----------------------------------------------------------------------------------------------+-----------+
+| :ref:`float<class_float>`                         | :ref:`autorestart_delay<class_AnimationNodeOneShot_property_autorestart_delay>`               | ``1.0``   |
++---------------------------------------------------+-----------------------------------------------------------------------------------------------+-----------+
+| :ref:`float<class_float>`                         | :ref:`autorestart_random_delay<class_AnimationNodeOneShot_property_autorestart_random_delay>` | ``0.0``   |
++---------------------------------------------------+-----------------------------------------------------------------------------------------------+-----------+
+| :ref:`float<class_float>`                         | :ref:`fadein_time<class_AnimationNodeOneShot_property_fadein_time>`                           | ``0.1``   |
++---------------------------------------------------+-----------------------------------------------------------------------------------------------+-----------+
+| :ref:`float<class_float>`                         | :ref:`fadeout_time<class_AnimationNodeOneShot_property_fadeout_time>`                         | ``0.1``   |
++---------------------------------------------------+-----------------------------------------------------------------------------------------------+-----------+
+| :ref:`MixMode<enum_AnimationNodeOneShot_MixMode>` | :ref:`mix_mode<class_AnimationNodeOneShot_property_mix_mode>`                                 | ``0``     |
++---------------------------------------------------+-----------------------------------------------------------------------------------------------+-----------+
+| :ref:`bool<class_bool>`                           | :ref:`sync<class_AnimationNodeOneShot_property_sync>`                                         | ``false`` |
++---------------------------------------------------+-----------------------------------------------------------------------------------------------+-----------+
 
 
 Enumerations
 Enumerations
 ------------
 ------------
@@ -145,6 +138,20 @@ If :ref:`autorestart<class_AnimationNodeOneShot_property_autorestart>` is ``true
 
 
 ----
 ----
 
 
+.. _class_AnimationNodeOneShot_property_mix_mode:
+
+- :ref:`MixMode<enum_AnimationNodeOneShot_MixMode>` **mix_mode**
+
++-----------+---------------------+
+| *Default* | ``0``               |
++-----------+---------------------+
+| *Setter*  | set_mix_mode(value) |
++-----------+---------------------+
+| *Getter*  | get_mix_mode()      |
++-----------+---------------------+
+
+----
+
 .. _class_AnimationNodeOneShot_property_sync:
 .. _class_AnimationNodeOneShot_property_sync:
 
 
 - :ref:`bool<class_bool>` **sync**
 - :ref:`bool<class_bool>` **sync**
@@ -157,19 +164,6 @@ If :ref:`autorestart<class_AnimationNodeOneShot_property_autorestart>` is ``true
 | *Getter*  | is_using_sync()     |
 | *Getter*  | is_using_sync()     |
 +-----------+---------------------+
 +-----------+---------------------+
 
 
-Method Descriptions
--------------------
-
-.. _class_AnimationNodeOneShot_method_get_mix_mode:
-
-- :ref:`MixMode<enum_AnimationNodeOneShot_MixMode>` **get_mix_mode** **(** **)** |const|
-
-----
-
-.. _class_AnimationNodeOneShot_method_set_mix_mode:
-
-- void **set_mix_mode** **(** :ref:`MixMode<enum_AnimationNodeOneShot_MixMode>` mode **)**
-
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |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_array.rst

@@ -346,9 +346,9 @@ Returns ``true`` if the array contains the given value.
 
 
 - :ref:`int<class_int>` **hash** **(** **)**
 - :ref:`int<class_int>` **hash** **(** **)**
 
 
-Returns a hashed integer value representing the array and its contents.
+Returns a hashed 32-bit integer value representing the array and its contents.
 
 
-**Note:** Arrays with equal contents can still produce different hashes. Only the exact same arrays will produce the same hashed integer value.
+**Note:** ``Array``\ s with equal content will always produce identical hash values. However, the reverse is not true. Returning identical hash values does *not* imply the arrays are equal, because different arrays can have identical hash values due to hash collisions.
 
 
 ----
 ----
 
 

+ 3 - 3
classes/class_audioserver.rst

@@ -188,7 +188,7 @@ Number of available audio buses.
 | *Getter*  | get_device()      |
 | *Getter*  | get_device()      |
 +-----------+-------------------+
 +-----------+-------------------+
 
 
-Name of the current device for audio output (see :ref:`get_device_list<class_AudioServer_method_get_device_list>`).
+Name of the current device for audio output (see :ref:`get_device_list<class_AudioServer_method_get_device_list>`). On systems with multiple audio outputs (such as analog, USB and HDMI audio), this can be used to select the audio output device. The value ``"Default"`` will play audio on the system-wide default audio output. If an invalid device name is set, the value will be reverted back to ``"Default"``.
 
 
 ----
 ----
 
 
@@ -229,7 +229,7 @@ Adds an :ref:`AudioEffect<class_AudioEffect>` effect to the bus ``bus_idx`` at `
 
 
 - :ref:`String<class_String>` **capture_get_device** **(** **)**
 - :ref:`String<class_String>` **capture_get_device** **(** **)**
 
 
-Name of the current device for audio input (see :ref:`capture_get_device_list<class_AudioServer_method_capture_get_device_list>`).
+Name of the current device for audio input (see :ref:`capture_get_device_list<class_AudioServer_method_capture_get_device_list>`). The value ``"Default"`` means that the system-wide default audio input is currently used.
 
 
 ----
 ----
 
 
@@ -245,7 +245,7 @@ Returns the names of all audio input devices detected on the system.
 
 
 - void **capture_set_device** **(** :ref:`String<class_String>` name **)**
 - void **capture_set_device** **(** :ref:`String<class_String>` name **)**
 
 
-Sets which audio input device is used for audio capture.
+Sets which audio input device is used for audio capture. On systems with multiple audio inputs (such as analog and USB), this can be used to select the audio input device. Setting the value ``"Default"`` will record audio from the system-wide default audio input. If an invalid device name is set, the value will be reverted back to ``"Default"``.
 
 
 ----
 ----
 
 

+ 1 - 1
classes/class_audiostreamplayer2d.rst

@@ -91,7 +91,7 @@ Property Descriptions
 | *Getter*  | get_area_mask()      |
 | *Getter*  | get_area_mask()      |
 +-----------+----------------------+
 +-----------+----------------------+
 
 
-Areas in which this sound plays.
+Determines which :ref:`Area2D<class_Area2D>` layers affect the sound for reverb and audio bus effects. Areas can be used to redirect :ref:`AudioStream<class_AudioStream>`\ s so that they play in a certain audio bus. An example of how you might use this is making a "water" area so that sounds played in the water are redirected through an audio bus to make them sound like they are being played underwater.
 
 
 ----
 ----
 
 

+ 1 - 1
classes/class_audiostreamplayer3d.rst

@@ -166,7 +166,7 @@ Property Descriptions
 | *Getter*  | get_area_mask()      |
 | *Getter*  | get_area_mask()      |
 +-----------+----------------------+
 +-----------+----------------------+
 
 
-Areas in which this sound plays.
+Determines which :ref:`Area<class_Area>` layers affect the sound for reverb and audio bus effects. Areas can be used to redirect :ref:`AudioStream<class_AudioStream>`\ s so that they play in a certain audio bus. An example of how you might use this is making a "water" area so that sounds played in the water are redirected through an audio bus to make them sound like they are being played underwater.
 
 
 ----
 ----
 
 

+ 7 - 0
classes/class_csgbox.rst

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

+ 7 - 0
classes/class_csgcombiner.rst

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

+ 7 - 0
classes/class_csgcylinder.rst

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

+ 7 - 0
classes/class_csgmesh.rst

@@ -18,6 +18,13 @@ Description
 
 
 This CSG node allows you to use any mesh resource as a CSG shape, provided it is closed, does not self-intersect, does not contain internal faces and has no edges that connect to more than two faces. See also :ref:`CSGPolygon<class_CSGPolygon>` for drawing 2D extruded polygons to be used as CSG nodes.
 This CSG node allows you to use any mesh resource as a CSG shape, provided it is closed, does not self-intersect, does not contain internal faces and has no edges that connect to more than two faces. See also :ref:`CSGPolygon<class_CSGPolygon>` for drawing 2D extruded polygons to be used as CSG nodes.
 
 
+**Note:** CSG nodes are intended to be used for level prototyping. Creating CSG nodes has a significant CPU cost compared to creating a :ref:`MeshInstance<class_MeshInstance>` with a :ref:`PrimitiveMesh<class_PrimitiveMesh>`. Moving a CSG node within another CSG node also has a significant CPU cost, so it should be avoided during gameplay.
+
+Tutorials
+---------
+
+- `Prototyping levels with CSG <$DOCS_URL/tutorials/3d/csg_tools.html>`__
+
 Properties
 Properties
 ----------
 ----------
 
 

+ 7 - 0
classes/class_csgpolygon.rst

@@ -18,6 +18,13 @@ Description
 
 
 An array of 2D points is extruded to quickly and easily create a variety of 3D meshes. See also :ref:`CSGMesh<class_CSGMesh>` for using 3D meshes as CSG nodes.
 An array of 2D points is extruded to quickly and easily create a variety of 3D meshes. See also :ref:`CSGMesh<class_CSGMesh>` for using 3D meshes as CSG nodes.
 
 
+**Note:** CSG nodes are intended to be used for level prototyping. Creating CSG nodes has a significant CPU cost compared to creating a :ref:`MeshInstance<class_MeshInstance>` with a :ref:`PrimitiveMesh<class_PrimitiveMesh>`. Moving a CSG node within another CSG node also has a significant CPU cost, so it should be avoided during gameplay.
+
+Tutorials
+---------
+
+- `Prototyping levels with CSG <$DOCS_URL/tutorials/3d/csg_tools.html>`__
+
 Properties
 Properties
 ----------
 ----------
 
 

+ 7 - 0
classes/class_csgprimitive.rst

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

+ 7 - 0
classes/class_csgshape.rst

@@ -20,6 +20,13 @@ Description
 
 
 This is the CSG base class that provides CSG operation support to the various CSG nodes in Godot.
 This is the CSG base class that provides CSG operation support to the various CSG nodes in Godot.
 
 
+**Note:** CSG nodes are intended to be used for level prototyping. Creating CSG nodes has a significant CPU cost compared to creating a :ref:`MeshInstance<class_MeshInstance>` with a :ref:`PrimitiveMesh<class_PrimitiveMesh>`. Moving a CSG node within another CSG node also has a significant CPU cost, so it should be avoided during gameplay.
+
+Tutorials
+---------
+
+- `Prototyping levels with CSG <$DOCS_URL/tutorials/3d/csg_tools.html>`__
+
 Properties
 Properties
 ----------
 ----------
 
 

+ 7 - 0
classes/class_csgsphere.rst

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

+ 7 - 0
classes/class_csgtorus.rst

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

+ 3 - 1
classes/class_dictionary.rst

@@ -223,7 +223,7 @@ Returns ``true`` if the dictionary has all the keys in the given array.
 
 
 - :ref:`int<class_int>` **hash** **(** **)**
 - :ref:`int<class_int>` **hash** **(** **)**
 
 
-Returns a hashed integer value representing the dictionary contents. This can be used to compare dictionaries by value:
+Returns a hashed 32-bit integer value representing the dictionary contents. This can be used to compare dictionaries by value:
 
 
 ::
 ::
 
 
@@ -234,6 +234,8 @@ Returns a hashed integer value representing the dictionary contents. This can be
 
 
 **Note:** Dictionaries with the same keys/values but in a different order will have a different hash.
 **Note:** Dictionaries with the same keys/values but in a different order will have a different hash.
 
 
+**Note:** Dictionaries with equal content will always produce identical hash values. However, the reverse is not true. Returning identical hash values does *not* imply the dictionaries are equal, because different dictionaries can have identical hash values due to hash collisions.
+
 ----
 ----
 
 
 .. _class_Dictionary_method_keys:
 .. _class_Dictionary_method_keys:

+ 3 - 1
classes/class_environment.rst

@@ -503,7 +503,9 @@ The ambient light's energy. The higher the value, the stronger the light.
 | *Getter*  | get_ambient_light_sky_contribution()      |
 | *Getter*  | get_ambient_light_sky_contribution()      |
 +-----------+-------------------------------------------+
 +-----------+-------------------------------------------+
 
 
-Defines the amount of light that the sky brings on the scene. A value of 0 means that the sky's light emission has no effect on the scene illumination, thus all ambient illumination is provided by the ambient light. On the contrary, a value of 1 means that all the light that affects the scene is provided by the sky, thus the ambient light parameter has no effect on the scene.
+Defines the amount of light that the sky brings on the scene. A value of ``0.0`` means that the sky's light emission has no effect on the scene illumination, thus all ambient illumination is provided by the ambient light. On the contrary, a value of ``1.0`` means that *all* the light that affects the scene is provided by the sky, thus the ambient light parameter has no effect on the scene.
+
+**Note:** :ref:`ambient_light_sky_contribution<class_Environment_property_ambient_light_sky_contribution>` is internally clamped between ``0.0`` and ``1.0`` (inclusive).
 
 
 ----
 ----
 
 

+ 4 - 4
classes/class_graphedit.rst

@@ -108,7 +108,7 @@ Theme Properties
 +---------------------------------+----------------------------------------------------------------------------------------------------+----------------------------+
 +---------------------------------+----------------------------------------------------------------------------------------------------+----------------------------+
 | :ref:`int<class_int>`           | :ref:`port_grab_distance_horizontal<class_GraphEdit_theme_constant_port_grab_distance_horizontal>` | ``24``                     |
 | :ref:`int<class_int>`           | :ref:`port_grab_distance_horizontal<class_GraphEdit_theme_constant_port_grab_distance_horizontal>` | ``24``                     |
 +---------------------------------+----------------------------------------------------------------------------------------------------+----------------------------+
 +---------------------------------+----------------------------------------------------------------------------------------------------+----------------------------+
-| :ref:`int<class_int>`           | :ref:`port_grab_distance_vertical<class_GraphEdit_theme_constant_port_grab_distance_vertical>`     | ``6``                      |
+| :ref:`int<class_int>`           | :ref:`port_grab_distance_vertical<class_GraphEdit_theme_constant_port_grab_distance_vertical>`     | ``26``                     |
 +---------------------------------+----------------------------------------------------------------------------------------------------+----------------------------+
 +---------------------------------+----------------------------------------------------------------------------------------------------+----------------------------+
 | :ref:`Texture<class_Texture>`   | :ref:`minimap<class_GraphEdit_theme_icon_minimap>`                                                 |                            |
 | :ref:`Texture<class_Texture>`   | :ref:`minimap<class_GraphEdit_theme_icon_minimap>`                                                 |                            |
 +---------------------------------+----------------------------------------------------------------------------------------------------+----------------------------+
 +---------------------------------+----------------------------------------------------------------------------------------------------+----------------------------+
@@ -647,9 +647,9 @@ The horizontal range within which a port can be grabbed (on both sides).
 
 
 - :ref:`int<class_int>` **port_grab_distance_vertical**
 - :ref:`int<class_int>` **port_grab_distance_vertical**
 
 
-+-----------+-------+
-| *Default* | ``6`` |
-+-----------+-------+
++-----------+--------+
+| *Default* | ``26`` |
++-----------+--------+
 
 
 The vertical range within which a port can be grabbed (on both sides).
 The vertical range within which a port can be grabbed (on both sides).
 
 

+ 4 - 0
classes/class_image.rst

@@ -416,6 +416,8 @@ enum **CompressMode**:
 
 
 .. _class_Image_constant_COMPRESS_SOURCE_NORMAL:
 .. _class_Image_constant_COMPRESS_SOURCE_NORMAL:
 
 
+.. _class_Image_constant_COMPRESS_SOURCE_LAYERED:
+
 enum **CompressSource**:
 enum **CompressSource**:
 
 
 - **COMPRESS_SOURCE_GENERIC** = **0** --- Source texture (before compression) is a regular texture. Default for all textures.
 - **COMPRESS_SOURCE_GENERIC** = **0** --- Source texture (before compression) is a regular texture. Default for all textures.
@@ -424,6 +426,8 @@ enum **CompressSource**:
 
 
 - **COMPRESS_SOURCE_NORMAL** = **2** --- Source texture (before compression) is a normal texture (e.g. it can be compressed into two channels).
 - **COMPRESS_SOURCE_NORMAL** = **2** --- Source texture (before compression) is a normal texture (e.g. it can be compressed into two channels).
 
 
+- **COMPRESS_SOURCE_LAYERED** = **3** --- Source texture (before compression) is a :ref:`TextureLayered<class_TextureLayered>`.
+
 Constants
 Constants
 ---------
 ---------
 
 

+ 3 - 1
classes/class_input.rst

@@ -712,7 +712,9 @@ Vibrate Android and iOS devices.
 
 
 - void **warp_mouse_position** **(** :ref:`Vector2<class_Vector2>` to **)**
 - void **warp_mouse_position** **(** :ref:`Vector2<class_Vector2>` to **)**
 
 
-Sets the mouse position to the specified vector.
+Sets the mouse position to the specified vector, provided in pixels and relative to an origin at the upper left corner of the game window.
+
+Mouse position is clipped to the limits of the screen resolution, or to the limits of the game window if :ref:`MouseMode<enum_Input_MouseMode>` is set to :ref:`MOUSE_MODE_CONFINED<class_Input_constant_MOUSE_MODE_CONFINED>`.
 
 
 .. |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 - 1
classes/class_light.rst

@@ -357,7 +357,9 @@ The color of shadows cast by this light.
 | *Getter*  | get_param()      |
 | *Getter*  | get_param()      |
 +-----------+------------------+
 +-----------+------------------+
 
 
-Attempts to reduce :ref:`shadow_bias<class_Light_property_shadow_bias>` gap.
+Attempts to reduce :ref:`shadow_bias<class_Light_property_shadow_bias>` gap by rendering screen-space contact shadows. This has a performance impact, especially at higher values.
+
+**Note:** Contact shadows can look broken, so leaving this property to ``0.0`` is recommended.
 
 
 ----
 ----
 
 

+ 1 - 1
classes/class_object.rst

@@ -580,7 +580,7 @@ Removes a given entry from the object's metadata. See also :ref:`set_meta<class_
 
 
 - void **set** **(** :ref:`String<class_String>` property, :ref:`Variant<class_Variant>` value **)**
 - void **set** **(** :ref:`String<class_String>` property, :ref:`Variant<class_Variant>` value **)**
 
 
-Assigns a new value to the given property. If the ``property`` does not exist, nothing will happen.
+Assigns a new value to the given property. If the ``property`` does not exist or the given value's type doesn't match, nothing will happen.
 
 
 **Note:** In C#, the property name must be specified as snake_case if it is defined by a built-in Godot node. This doesn't apply to user-defined properties where you should use the same convention as in the C# source (typically PascalCase).
 **Note:** In C#, the property name must be specified as snake_case if it is defined by a built-in Godot node. This doesn't apply to user-defined properties where you should use the same convention as in the C# source (typically PascalCase).
 
 

+ 3 - 3
classes/class_raycast.rst

@@ -47,7 +47,7 @@ Properties
 +-------------------------------+----------------------------------------------------------------------------------+-------------------------+
 +-------------------------------+----------------------------------------------------------------------------------+-------------------------+
 | :ref:`Color<class_Color>`     | :ref:`debug_shape_custom_color<class_RayCast_property_debug_shape_custom_color>` | ``Color( 0, 0, 0, 1 )`` |
 | :ref:`Color<class_Color>`     | :ref:`debug_shape_custom_color<class_RayCast_property_debug_shape_custom_color>` | ``Color( 0, 0, 0, 1 )`` |
 +-------------------------------+----------------------------------------------------------------------------------+-------------------------+
 +-------------------------------+----------------------------------------------------------------------------------+-------------------------+
-| :ref:`float<class_float>`     | :ref:`debug_shape_thickness<class_RayCast_property_debug_shape_thickness>`       | ``2.0``                 |
+| :ref:`int<class_int>`         | :ref:`debug_shape_thickness<class_RayCast_property_debug_shape_thickness>`       | ``2``                   |
 +-------------------------------+----------------------------------------------------------------------------------+-------------------------+
 +-------------------------------+----------------------------------------------------------------------------------+-------------------------+
 | :ref:`bool<class_bool>`       | :ref:`enabled<class_RayCast_property_enabled>`                                   | ``false``               |
 | :ref:`bool<class_bool>`       | :ref:`enabled<class_RayCast_property_enabled>`                                   | ``false``               |
 +-------------------------------+----------------------------------------------------------------------------------+-------------------------+
 +-------------------------------+----------------------------------------------------------------------------------+-------------------------+
@@ -172,10 +172,10 @@ If set to ``Color(0.0, 0.0, 0.0)`` (by default), the color set in :ref:`ProjectS
 
 
 .. _class_RayCast_property_debug_shape_thickness:
 .. _class_RayCast_property_debug_shape_thickness:
 
 
-- :ref:`float<class_float>` **debug_shape_thickness**
+- :ref:`int<class_int>` **debug_shape_thickness**
 
 
 +-----------+----------------------------------+
 +-----------+----------------------------------+
-| *Default* | ``2.0``                          |
+| *Default* | ``2``                            |
 +-----------+----------------------------------+
 +-----------+----------------------------------+
 | *Setter*  | set_debug_shape_thickness(value) |
 | *Setter*  | set_debug_shape_thickness(value) |
 +-----------+----------------------------------+
 +-----------+----------------------------------+

+ 3 - 1
classes/class_string.rst

@@ -584,7 +584,9 @@ If the string is a valid file path, returns the filename.
 
 
 - :ref:`int<class_int>` **hash** **(** **)**
 - :ref:`int<class_int>` **hash** **(** **)**
 
 
-Hashes the string and returns a 32-bit integer.
+Returns the 32-bit hash value representing the string's contents.
+
+**Note:** ``String``\ s with equal content will always produce identical hash values. However, the reverse is not true. Returning identical hash values does *not* imply the strings are equal, because different strings can have identical hash values due to hash collisions.
 
 
 ----
 ----
 
 

+ 4 - 4
classes/class_tilemap.rst

@@ -114,7 +114,7 @@ Methods
 +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                          | :ref:`set_cell<class_TileMap_method_set_cell>` **(** :ref:`int<class_int>` x, :ref:`int<class_int>` y, :ref:`int<class_int>` tile, :ref:`bool<class_bool>` flip_x=false, :ref:`bool<class_bool>` flip_y=false, :ref:`bool<class_bool>` transpose=false, :ref:`Vector2<class_Vector2>` autotile_coord=Vector2( 0, 0 ) **)** |
 | void                          | :ref:`set_cell<class_TileMap_method_set_cell>` **(** :ref:`int<class_int>` x, :ref:`int<class_int>` y, :ref:`int<class_int>` tile, :ref:`bool<class_bool>` flip_x=false, :ref:`bool<class_bool>` flip_y=false, :ref:`bool<class_bool>` transpose=false, :ref:`Vector2<class_Vector2>` autotile_coord=Vector2( 0, 0 ) **)** |
 +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                          | :ref:`set_cellv<class_TileMap_method_set_cellv>` **(** :ref:`Vector2<class_Vector2>` position, :ref:`int<class_int>` tile, :ref:`bool<class_bool>` flip_x=false, :ref:`bool<class_bool>` flip_y=false, :ref:`bool<class_bool>` transpose=false **)**                                                                       |
+| void                          | :ref:`set_cellv<class_TileMap_method_set_cellv>` **(** :ref:`Vector2<class_Vector2>` position, :ref:`int<class_int>` tile, :ref:`bool<class_bool>` flip_x=false, :ref:`bool<class_bool>` flip_y=false, :ref:`bool<class_bool>` transpose=false, :ref:`Vector2<class_Vector2>` autotile_coord=Vector2( 0, 0 ) **)**         |
 +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                          | :ref:`set_collision_layer_bit<class_TileMap_method_set_collision_layer_bit>` **(** :ref:`int<class_int>` bit, :ref:`bool<class_bool>` value **)**                                                                                                                                                                          |
 | void                          | :ref:`set_collision_layer_bit<class_TileMap_method_set_collision_layer_bit>` **(** :ref:`int<class_int>` bit, :ref:`bool<class_bool>` value **)**                                                                                                                                                                          |
 +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -668,13 +668,13 @@ Overriding this method also overrides it internally, allowing custom logic to be
 
 
 .. _class_TileMap_method_set_cellv:
 .. _class_TileMap_method_set_cellv:
 
 
-- void **set_cellv** **(** :ref:`Vector2<class_Vector2>` position, :ref:`int<class_int>` tile, :ref:`bool<class_bool>` flip_x=false, :ref:`bool<class_bool>` flip_y=false, :ref:`bool<class_bool>` transpose=false **)**
+- void **set_cellv** **(** :ref:`Vector2<class_Vector2>` position, :ref:`int<class_int>` tile, :ref:`bool<class_bool>` flip_x=false, :ref:`bool<class_bool>` flip_y=false, :ref:`bool<class_bool>` transpose=false, :ref:`Vector2<class_Vector2>` autotile_coord=Vector2( 0, 0 ) **)**
 
 
-Sets the tile index for the given cell.
+Sets the tile index for the cell given by a Vector2.
 
 
 An index of ``-1`` clears the cell.
 An index of ``-1`` clears the cell.
 
 
-Optionally, the tile can also be flipped or transposed.
+Optionally, the tile can also be flipped, transposed, or given autotile coordinates. The autotile coordinate refers to the column and row of the subtile.
 
 
 **Note:** Data such as navigation polygons and collision shapes are not immediately updated for performance reasons.
 **Note:** Data such as navigation polygons and collision shapes are not immediately updated for performance reasons.
 
 

+ 2 - 2
classes/class_treeitem.rst

@@ -255,7 +255,7 @@ Method Descriptions
 
 
 - void **add_button** **(** :ref:`int<class_int>` column, :ref:`Texture<class_Texture>` button, :ref:`int<class_int>` button_idx=-1, :ref:`bool<class_bool>` disabled=false, :ref:`String<class_String>` tooltip="" **)**
 - void **add_button** **(** :ref:`int<class_int>` column, :ref:`Texture<class_Texture>` button, :ref:`int<class_int>` button_idx=-1, :ref:`bool<class_bool>` disabled=false, :ref:`String<class_String>` tooltip="" **)**
 
 
-Adds a button with :ref:`Texture<class_Texture>` ``button`` at column ``column``. The ``button_idx`` index is used to identify the button when calling other methods. If not specified, the next available index is used, which may be retrieved by calling :ref:`get_button_count<class_TreeItem_method_get_button_count>` immediately after this method. Optionally, the button can be ``disabled`` and have a ``tooltip``.
+Adds a button with :ref:`Texture<class_Texture>` ``button`` at column ``column``. The ``button_idx`` is used to identify the button. If not specified, the next available index is used, which may be retrieved by calling :ref:`get_button_count<class_TreeItem_method_get_button_count>` immediately after this method. Optionally, the button can be ``disabled`` and have a ``tooltip``.
 
 
 ----
 ----
 
 
@@ -311,7 +311,7 @@ Returns the :ref:`Texture<class_Texture>` of the button at index ``button_idx``
 
 
 - :ref:`int<class_int>` **get_button_count** **(** :ref:`int<class_int>` column **)** |const|
 - :ref:`int<class_int>` **get_button_count** **(** :ref:`int<class_int>` column **)** |const|
 
 
-Returns the number of buttons in column ``column``. May be used to get the most recently added button's index, if no index was specified.
+Returns the number of buttons in column ``column``.
 
 
 ----
 ----