Bladeren bron

Sync classref with current source

Rémi Verschelde 6 jaren geleden
bovenliggende
commit
fc3007ea5e

+ 44 - 0
classes/[email protected]

@@ -1282,6 +1282,20 @@ enum **ButtonList**:
 
 
 .. _class_@GlobalScope_constant_JOY_DS_Y:
 .. _class_@GlobalScope_constant_JOY_DS_Y:
 
 
+.. _class_@GlobalScope_constant_JOY_VR_GRIP:
+
+.. _class_@GlobalScope_constant_JOY_VR_PAD:
+
+.. _class_@GlobalScope_constant_JOY_VR_TRIGGER:
+
+.. _class_@GlobalScope_constant_JOY_OCULUS_AX:
+
+.. _class_@GlobalScope_constant_JOY_OCULUS_BY:
+
+.. _class_@GlobalScope_constant_JOY_OCULUS_MENU:
+
+.. _class_@GlobalScope_constant_JOY_OPENVR_MENU:
+
 .. _class_@GlobalScope_constant_JOY_SELECT:
 .. _class_@GlobalScope_constant_JOY_SELECT:
 
 
 .. _class_@GlobalScope_constant_JOY_START:
 .. _class_@GlobalScope_constant_JOY_START:
@@ -1340,6 +1354,14 @@ enum **ButtonList**:
 
 
 .. _class_@GlobalScope_constant_JOY_ANALOG_R2:
 .. _class_@GlobalScope_constant_JOY_ANALOG_R2:
 
 
+.. _class_@GlobalScope_constant_JOY_VR_ANALOG_TRIGGER:
+
+.. _class_@GlobalScope_constant_JOY_VR_ANALOG_GRIP:
+
+.. _class_@GlobalScope_constant_JOY_OPENVR_TOUCHPADX:
+
+.. _class_@GlobalScope_constant_JOY_OPENVR_TOUCHPADY:
+
 enum **JoystickList**:
 enum **JoystickList**:
 
 
 - **JOY_BUTTON_0** = **0** --- Joypad Button 0
 - **JOY_BUTTON_0** = **0** --- Joypad Button 0
@@ -1400,6 +1422,20 @@ enum **JoystickList**:
 
 
 - **JOY_DS_Y** = **2** --- DualShock controller Y button
 - **JOY_DS_Y** = **2** --- DualShock controller Y button
 
 
+- **JOY_VR_GRIP** = **2** --- Grip (side) buttons on a VR controller
+
+- **JOY_VR_PAD** = **14** --- Push down on the touchpad or main joystick on a VR controller
+
+- **JOY_VR_TRIGGER** = **15** --- Trigger on a VR controller
+
+- **JOY_OCULUS_AX** = **7** --- A button on the right Oculus Touch controller, X button on the left controller (also when used in OpenVR)
+
+- **JOY_OCULUS_BY** = **1** --- B button on the right Oculus Touch controller, Y button on the left controller (also when used in OpenVR)
+
+- **JOY_OCULUS_MENU** = **3** --- Menu button on either Oculus Touch controller.
+
+- **JOY_OPENVR_MENU** = **1** --- Menu button in OpenVR (Except when Oculus Touch controllers are used)
+
 - **JOY_SELECT** = **10** --- Joypad Button Select
 - **JOY_SELECT** = **10** --- Joypad Button Select
 
 
 - **JOY_START** = **11** --- Joypad Button Start
 - **JOY_START** = **11** --- Joypad Button Start
@@ -1458,6 +1494,14 @@ enum **JoystickList**:
 
 
 - **JOY_ANALOG_R2** = **7** --- Joypad Right Analog Trigger
 - **JOY_ANALOG_R2** = **7** --- Joypad Right Analog Trigger
 
 
+- **JOY_VR_ANALOG_TRIGGER** = **2** --- VR Controller Analog Trigger
+
+- **JOY_VR_ANALOG_GRIP** = **4** --- VR Controller Analog Grip (side buttons)
+
+- **JOY_OPENVR_TOUCHPADX** = **0** --- OpenVR touchpad X axis (Joystick axis on Oculus Touch and Windows MR controllers)
+
+- **JOY_OPENVR_TOUCHPADY** = **1** --- OpenVR touchpad Y axis (Joystick axis on Oculus Touch and Windows MR controllers)
+
 .. _enum_@GlobalScope_MidiMessageList:
 .. _enum_@GlobalScope_MidiMessageList:
 
 
 .. _class_@GlobalScope_constant_MIDI_MESSAGE_NOTE_OFF:
 .. _class_@GlobalScope_constant_MIDI_MESSAGE_NOTE_OFF:

+ 6 - 2
classes/class_arraymesh.rst

@@ -14,7 +14,7 @@ ArrayMesh
 Brief Description
 Brief Description
 -----------------
 -----------------
 
 
-
+:ref:`Mesh<class_Mesh>` type that provides utility for constructing a surface from arrays.
 
 
 Properties
 Properties
 ----------
 ----------
@@ -208,7 +208,7 @@ Property Descriptions
 | *Getter* | get_custom_aabb()      |
 | *Getter* | get_custom_aabb()      |
 +----------+------------------------+
 +----------+------------------------+
 
 
-An overriding bounding box for this mesh.
+Overrides the :ref:`AABB<class_AABB>` with one defined by user for use with frustum culling. Especially useful to avoid unnexpected culling when using a shader to offset vertices.
 
 
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
@@ -217,6 +217,8 @@ Method Descriptions
 
 
 - void **add_blend_shape** **(** :ref:`String<class_String>` name **)**
 - void **add_blend_shape** **(** :ref:`String<class_String>` name **)**
 
 
+Add name for a blend shape that will be added with :ref:`add_surface_from_arrays<class_ArrayMesh_method_add_surface_from_arrays>`. Must be called before surface is added.
+
 .. _class_ArrayMesh_method_add_surface_from_arrays:
 .. _class_ArrayMesh_method_add_surface_from_arrays:
 
 
 - void **add_surface_from_arrays** **(** :ref:`PrimitiveType<enum_Mesh_PrimitiveType>` primitive, :ref:`Array<class_Array>` arrays, :ref:`Array<class_Array>` blend_shapes=[  ], :ref:`int<class_int>` compress_flags=97280 **)**
 - void **add_surface_from_arrays** **(** :ref:`PrimitiveType<enum_Mesh_PrimitiveType>` primitive, :ref:`Array<class_Array>` arrays, :ref:`Array<class_Array>` blend_shapes=[  ], :ref:`int<class_int>` compress_flags=97280 **)**
@@ -313,3 +315,5 @@ Set a name for a given surface.
 
 
 - void **surface_update_region** **(** :ref:`int<class_int>` surf_idx, :ref:`int<class_int>` offset, :ref:`PoolByteArray<class_PoolByteArray>` data **)**
 - void **surface_update_region** **(** :ref:`int<class_int>` surf_idx, :ref:`int<class_int>` offset, :ref:`PoolByteArray<class_PoolByteArray>` data **)**
 
 
+Updates a specified region of mesh arrays on GPU. Warning: only use if you know what you are doing. You can easily cause crashes by calling this function with improper arguments.
+

+ 22 - 1
classes/class_bone2d.rst

@@ -14,7 +14,7 @@ Bone2D
 Brief Description
 Brief Description
 -----------------
 -----------------
 
 
-
+Joint used with :ref:`Skeleton2D<class_Skeleton2D>` to control and animate other nodes.
 
 
 Properties
 Properties
 ----------
 ----------
@@ -36,6 +36,17 @@ Methods
 | :ref:`Transform2D<class_Transform2D>` | :ref:`get_skeleton_rest<class_Bone2D_method_get_skeleton_rest>` **(** **)** const         |
 | :ref:`Transform2D<class_Transform2D>` | :ref:`get_skeleton_rest<class_Bone2D_method_get_skeleton_rest>` **(** **)** const         |
 +---------------------------------------+-------------------------------------------------------------------------------------------+
 +---------------------------------------+-------------------------------------------------------------------------------------------+
 
 
+Description
+-----------
+
+Use a hierarchy of ``Bone2D`` bound to a :ref:`Skeleton2D<class_Skeleton2D>` to control, and animate other :ref:`Node2D<class_Node2D>` nodes.
+
+You can use ``Bone2D`` and ``Skeleton2D`` nodes to animate 2D meshes created with the Polygon 2D UV editor.
+
+Each bone has a :ref:`rest<class_Bone2D_property_rest>` transform that you can reset to with :ref:`apply_rest<class_Bone2D_method_apply_rest>`. These rest poses are relative to the bone's parent.
+
+If in the editor, you can set the rest pose of an entire skeleton using a menu option, from the code, you need to iterate over the bones to set their individual rest poses.
+
 Property Descriptions
 Property Descriptions
 ---------------------
 ---------------------
 
 
@@ -49,6 +60,8 @@ Property Descriptions
 | *Getter* | get_default_length()      |
 | *Getter* | get_default_length()      |
 +----------+---------------------------+
 +----------+---------------------------+
 
 
+Length of the bone's representation drawn in the editor's viewport in pixels.
+
 .. _class_Bone2D_property_rest:
 .. _class_Bone2D_property_rest:
 
 
 - :ref:`Transform2D<class_Transform2D>` **rest**
 - :ref:`Transform2D<class_Transform2D>` **rest**
@@ -59,6 +72,8 @@ Property Descriptions
 | *Getter* | get_rest()      |
 | *Getter* | get_rest()      |
 +----------+-----------------+
 +----------+-----------------+
 
 
+Rest transform of the bone. You can reset the node's transforms to this value using :ref:`apply_rest<class_Bone2D_method_apply_rest>`.
+
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
 
 
@@ -66,11 +81,17 @@ Method Descriptions
 
 
 - void **apply_rest** **(** **)**
 - void **apply_rest** **(** **)**
 
 
+Stores the node's current transforms in :ref:`rest<class_Bone2D_property_rest>`.
+
 .. _class_Bone2D_method_get_index_in_skeleton:
 .. _class_Bone2D_method_get_index_in_skeleton:
 
 
 - :ref:`int<class_int>` **get_index_in_skeleton** **(** **)** const
 - :ref:`int<class_int>` **get_index_in_skeleton** **(** **)** const
 
 
+Returns the node's index as part of the entire skeleton. See :ref:`Skeleton2D<class_Skeleton2D>`.
+
 .. _class_Bone2D_method_get_skeleton_rest:
 .. _class_Bone2D_method_get_skeleton_rest:
 
 
 - :ref:`Transform2D<class_Transform2D>` **get_skeleton_rest** **(** **)** const
 - :ref:`Transform2D<class_Transform2D>` **get_skeleton_rest** **(** **)** const
 
 
+Returns the node's :ref:`rest<class_Bone2D_property_rest>` ``Transform2D`` if it doesn't have a parent, or its rest pose relative to its parent.
+

+ 21 - 15
classes/class_clippedcamera.rst

@@ -34,21 +34,23 @@ Properties
 Methods
 Methods
 -------
 -------
 
 
-+-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                    | :ref:`add_exception<class_ClippedCamera_method_add_exception>` **(** :ref:`Object<class_Object>` node **)**                                           |
-+-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                    | :ref:`add_exception_rid<class_ClippedCamera_method_add_exception_rid>` **(** :ref:`RID<class_RID>` rid **)**                                          |
-+-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                    | :ref:`clear_exceptions<class_ClippedCamera_method_clear_exceptions>` **(** **)**                                                                      |
-+-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>` | :ref:`get_collision_mask_bit<class_ClippedCamera_method_get_collision_mask_bit>` **(** :ref:`int<class_int>` bit **)** const                          |
-+-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                    | :ref:`remove_exception<class_ClippedCamera_method_remove_exception>` **(** :ref:`Object<class_Object>` node **)**                                     |
-+-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                    | :ref:`remove_exception_rid<class_ClippedCamera_method_remove_exception_rid>` **(** :ref:`RID<class_RID>` rid **)**                                    |
-+-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                    | :ref:`set_collision_mask_bit<class_ClippedCamera_method_set_collision_mask_bit>` **(** :ref:`int<class_int>` bit, :ref:`bool<class_bool>` value **)** |
-+-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
++---------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                      | :ref:`add_exception<class_ClippedCamera_method_add_exception>` **(** :ref:`Object<class_Object>` node **)**                                           |
++---------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                      | :ref:`add_exception_rid<class_ClippedCamera_method_add_exception_rid>` **(** :ref:`RID<class_RID>` rid **)**                                          |
++---------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                      | :ref:`clear_exceptions<class_ClippedCamera_method_clear_exceptions>` **(** **)**                                                                      |
++---------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>` | :ref:`get_clip_offset<class_ClippedCamera_method_get_clip_offset>` **(** **)** const                                                                  |
++---------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`   | :ref:`get_collision_mask_bit<class_ClippedCamera_method_get_collision_mask_bit>` **(** :ref:`int<class_int>` bit **)** const                          |
++---------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                      | :ref:`remove_exception<class_ClippedCamera_method_remove_exception>` **(** :ref:`Object<class_Object>` node **)**                                     |
++---------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                      | :ref:`remove_exception_rid<class_ClippedCamera_method_remove_exception_rid>` **(** :ref:`RID<class_RID>` rid **)**                                    |
++---------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                      | :ref:`set_collision_mask_bit<class_ClippedCamera_method_set_collision_mask_bit>` **(** :ref:`int<class_int>` bit, :ref:`bool<class_bool>` value **)** |
++---------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 
 Enumerations
 Enumerations
 ------------
 ------------
@@ -133,6 +135,10 @@ Method Descriptions
 
 
 - void **clear_exceptions** **(** **)**
 - void **clear_exceptions** **(** **)**
 
 
+.. _class_ClippedCamera_method_get_clip_offset:
+
+- :ref:`float<class_float>` **get_clip_offset** **(** **)** const
+
 .. _class_ClippedCamera_method_get_collision_mask_bit:
 .. _class_ClippedCamera_method_get_collision_mask_bit:
 
 
 - :ref:`bool<class_bool>` **get_collision_mask_bit** **(** :ref:`int<class_int>` bit **)** const
 - :ref:`bool<class_bool>` **get_collision_mask_bit** **(** :ref:`int<class_int>` bit **)** const

+ 1 - 1
classes/class_color.rst

@@ -849,7 +849,7 @@ The gray value is calculated as ``(r + g + b) / 3``.
 
 
 - :ref:`Color<class_Color>` **inverted** **(** **)**
 - :ref:`Color<class_Color>` **inverted** **(** **)**
 
 
-Returns the inverted color ``(1 - r, 1 - g, 1 - b, 1 - a)``.
+Returns the inverted color ``(1 - r, 1 - g, 1 - b, a)``.
 
 
 ::
 ::
 
 

+ 198 - 25
classes/class_cpuparticles.rst

@@ -14,7 +14,7 @@ CPUParticles
 Brief Description
 Brief Description
 -----------------
 -----------------
 
 
-
+CPU-based 3D particle emitter.
 
 
 Properties
 Properties
 ----------
 ----------
@@ -112,6 +112,12 @@ Properties
 +-------------------------------------------------------+-------------------------------------------------------------------------------------+
 +-------------------------------------------------------+-------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                               | :ref:`one_shot<class_CPUParticles_property_one_shot>`                               |
 | :ref:`bool<class_bool>`                               | :ref:`one_shot<class_CPUParticles_property_one_shot>`                               |
 +-------------------------------------------------------+-------------------------------------------------------------------------------------+
 +-------------------------------------------------------+-------------------------------------------------------------------------------------+
+| :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>`                           |
 | :ref:`float<class_float>`                             | :ref:`preprocess<class_CPUParticles_property_preprocess>`                           |
 +-------------------------------------------------------+-------------------------------------------------------------------------------------+
 +-------------------------------------------------------+-------------------------------------------------------------------------------------+
 | :ref:`float<class_float>`                             | :ref:`radial_accel<class_CPUParticles_property_radial_accel>`                       |
 | :ref:`float<class_float>`                             | :ref:`radial_accel<class_CPUParticles_property_radial_accel>`                       |
@@ -161,11 +167,11 @@ Enumerations
 
 
 enum **DrawOrder**:
 enum **DrawOrder**:
 
 
-- **DRAW_ORDER_INDEX** = **0**
+- **DRAW_ORDER_INDEX** = **0** --- Particles are drawn in the order emitted.
 
 
-- **DRAW_ORDER_LIFETIME** = **1**
+- **DRAW_ORDER_LIFETIME** = **1** --- Particles are drawn in order of remaining lifetime.
 
 
-- **DRAW_ORDER_VIEW_DEPTH** = **2**
+- **DRAW_ORDER_VIEW_DEPTH** = **2** --- Particles are drawn in order of depth.
 
 
 .. _enum_CPUParticles_Parameter:
 .. _enum_CPUParticles_Parameter:
 
 
@@ -173,6 +179,8 @@ enum **DrawOrder**:
 
 
 .. _class_CPUParticles_constant_PARAM_ANGULAR_VELOCITY:
 .. _class_CPUParticles_constant_PARAM_ANGULAR_VELOCITY:
 
 
+.. _class_CPUParticles_constant_PARAM_ORBIT_VELOCITY:
+
 .. _class_CPUParticles_constant_PARAM_LINEAR_ACCEL:
 .. _class_CPUParticles_constant_PARAM_LINEAR_ACCEL:
 
 
 .. _class_CPUParticles_constant_PARAM_RADIAL_ACCEL:
 .. _class_CPUParticles_constant_PARAM_RADIAL_ACCEL:
@@ -195,29 +203,31 @@ enum **DrawOrder**:
 
 
 enum **Parameter**:
 enum **Parameter**:
 
 
-- **PARAM_INITIAL_LINEAR_VELOCITY** = **0**
+- **PARAM_INITIAL_LINEAR_VELOCITY** = **0** --- Use with :ref:`set_param<class_CPUParticles_method_set_param>`, :ref:`set_param_randomness<class_CPUParticles_method_set_param_randomness>`, and :ref:`set_param_texture<class_CPUParticles_method_set_param_texture>` to set initial velocity properties.
+
+- **PARAM_ANGULAR_VELOCITY** = **1** --- Use with :ref:`set_param<class_CPUParticles_method_set_param>`, :ref:`set_param_randomness<class_CPUParticles_method_set_param_randomness>`, and :ref:`set_param_texture<class_CPUParticles_method_set_param_texture>` to set angular velocity properties.
 
 
-- **PARAM_ANGULAR_VELOCITY** = **1**
+- **PARAM_ORBIT_VELOCITY** = **2** --- Use with :ref:`set_param<class_CPUParticles_method_set_param>`, :ref:`set_param_randomness<class_CPUParticles_method_set_param_randomness>`, and :ref:`set_param_texture<class_CPUParticles_method_set_param_texture>` to set orbital velocity properties.
 
 
-- **PARAM_LINEAR_ACCEL** = **2**
+- **PARAM_LINEAR_ACCEL** = **3** --- Use with :ref:`set_param<class_CPUParticles_method_set_param>`, :ref:`set_param_randomness<class_CPUParticles_method_set_param_randomness>`, and :ref:`set_param_texture<class_CPUParticles_method_set_param_texture>` to set linear acceleration properties.
 
 
-- **PARAM_RADIAL_ACCEL** = **3**
+- **PARAM_RADIAL_ACCEL** = **4** --- Use with :ref:`set_param<class_CPUParticles_method_set_param>`, :ref:`set_param_randomness<class_CPUParticles_method_set_param_randomness>`, and :ref:`set_param_texture<class_CPUParticles_method_set_param_texture>` to set radial acceleration properties.
 
 
-- **PARAM_TANGENTIAL_ACCEL** = **4**
+- **PARAM_TANGENTIAL_ACCEL** = **5** --- Use with :ref:`set_param<class_CPUParticles_method_set_param>`, :ref:`set_param_randomness<class_CPUParticles_method_set_param_randomness>`, and :ref:`set_param_texture<class_CPUParticles_method_set_param_texture>` to set tangential acceleration properties.
 
 
-- **PARAM_DAMPING** = **5**
+- **PARAM_DAMPING** = **6** --- Use with :ref:`set_param<class_CPUParticles_method_set_param>`, :ref:`set_param_randomness<class_CPUParticles_method_set_param_randomness>`, and :ref:`set_param_texture<class_CPUParticles_method_set_param_texture>` to set damping properties.
 
 
-- **PARAM_ANGLE** = **6**
+- **PARAM_ANGLE** = **7** --- Use with :ref:`set_param<class_CPUParticles_method_set_param>`, :ref:`set_param_randomness<class_CPUParticles_method_set_param_randomness>`, and :ref:`set_param_texture<class_CPUParticles_method_set_param_texture>` to set angle properties.
 
 
-- **PARAM_SCALE** = **7**
+- **PARAM_SCALE** = **8** --- Use with :ref:`set_param<class_CPUParticles_method_set_param>`, :ref:`set_param_randomness<class_CPUParticles_method_set_param_randomness>`, and :ref:`set_param_texture<class_CPUParticles_method_set_param_texture>` to set scale properties.
 
 
-- **PARAM_HUE_VARIATION** = **8**
+- **PARAM_HUE_VARIATION** = **9** --- Use with :ref:`set_param<class_CPUParticles_method_set_param>`, :ref:`set_param_randomness<class_CPUParticles_method_set_param_randomness>`, and :ref:`set_param_texture<class_CPUParticles_method_set_param_texture>` to set hue variation properties.
 
 
-- **PARAM_ANIM_SPEED** = **9**
+- **PARAM_ANIM_SPEED** = **10** --- Use with :ref:`set_param<class_CPUParticles_method_set_param>`, :ref:`set_param_randomness<class_CPUParticles_method_set_param_randomness>`, and :ref:`set_param_texture<class_CPUParticles_method_set_param_texture>` to set animation speed properties.
 
 
-- **PARAM_ANIM_OFFSET** = **10**
+- **PARAM_ANIM_OFFSET** = **11** --- Use with :ref:`set_param<class_CPUParticles_method_set_param>`, :ref:`set_param_randomness<class_CPUParticles_method_set_param_randomness>`, and :ref:`set_param_texture<class_CPUParticles_method_set_param_texture>` to set animation offset properties.
 
 
-- **PARAM_MAX** = **11**
+- **PARAM_MAX** = **12** --- Represents the size of the :ref:`Parameter<enum_CPUParticles_Parameter>` enum.
 
 
 .. _enum_CPUParticles_Flags:
 .. _enum_CPUParticles_Flags:
 
 
@@ -225,15 +235,19 @@ enum **Parameter**:
 
 
 .. _class_CPUParticles_constant_FLAG_ROTATE_Y:
 .. _class_CPUParticles_constant_FLAG_ROTATE_Y:
 
 
+.. _class_CPUParticles_constant_FLAG_DISABLE_Z:
+
 .. _class_CPUParticles_constant_FLAG_MAX:
 .. _class_CPUParticles_constant_FLAG_MAX:
 
 
 enum **Flags**:
 enum **Flags**:
 
 
-- **FLAG_ALIGN_Y_TO_VELOCITY** = **0**
+- **FLAG_ALIGN_Y_TO_VELOCITY** = **0** --- Use with :ref:`set_flag<class_CPUParticles_method_set_flag>` to set :ref:`flag_align_y<class_CPUParticles_property_flag_align_y>`.
+
+- **FLAG_ROTATE_Y** = **1** --- Use with :ref:`set_flag<class_CPUParticles_method_set_flag>` to set :ref:`flag_rotate_y<class_CPUParticles_property_flag_rotate_y>`.
 
 
-- **FLAG_ROTATE_Y** = **1**
+- **FLAG_DISABLE_Z** = **2** --- Use with :ref:`set_flag<class_CPUParticles_method_set_flag>` to set :ref:`flag_disable_z<class_CPUParticles_property_flag_disable_z>`.
 
 
-- **FLAG_MAX** = **3**
+- **FLAG_MAX** = **3** --- Represents the size of the :ref:`Flags<enum_CPUParticles_Flags>` enum.
 
 
 .. _enum_CPUParticles_EmissionShape:
 .. _enum_CPUParticles_EmissionShape:
 
 
@@ -249,15 +263,22 @@ enum **Flags**:
 
 
 enum **EmissionShape**:
 enum **EmissionShape**:
 
 
-- **EMISSION_SHAPE_POINT** = **0**
+- **EMISSION_SHAPE_POINT** = **0** --- All particles will be emitted from a single point.
+
+- **EMISSION_SHAPE_SPHERE** = **1** --- Particles will be emitted in the volume of a sphere.
 
 
-- **EMISSION_SHAPE_SPHERE** = **1**
+- **EMISSION_SHAPE_BOX** = **2** --- Particles will be emitted in the volume of a box.
 
 
-- **EMISSION_SHAPE_BOX** = **2**
+- **EMISSION_SHAPE_POINTS** = **3** --- Particles will be emitted at a position chosen randomly among :ref:`emission_points<class_CPUParticles_property_emission_points>`. Particle color will be modulated by :ref:`emission_colors<class_CPUParticles_property_emission_colors>`.
 
 
-- **EMISSION_SHAPE_POINTS** = **3**
+- **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**
+Description
+-----------
+
+CPU-based 3D particle node used to create a variety of particle systems and effects.
+
+See also :ref:`Particles<class_Particles>`, which provides the same functionality with hardware acceleration, but may not run on older devices.
 
 
 Property Descriptions
 Property Descriptions
 ---------------------
 ---------------------
@@ -272,6 +293,8 @@ Property Descriptions
 | *Getter* | get_amount()      |
 | *Getter* | get_amount()      |
 +----------+-------------------+
 +----------+-------------------+
 
 
+Number of particles emitted in one emission cycle.
+
 .. _class_CPUParticles_property_angle:
 .. _class_CPUParticles_property_angle:
 
 
 - :ref:`float<class_float>` **angle**
 - :ref:`float<class_float>` **angle**
@@ -282,6 +305,8 @@ Property Descriptions
 | *Getter* | get_param()      |
 | *Getter* | get_param()      |
 +----------+------------------+
 +----------+------------------+
 
 
+Initial rotation applied to each particle, in degrees.
+
 .. _class_CPUParticles_property_angle_curve:
 .. _class_CPUParticles_property_angle_curve:
 
 
 - :ref:`Curve<class_Curve>` **angle_curve**
 - :ref:`Curve<class_Curve>` **angle_curve**
@@ -292,6 +317,8 @@ Property Descriptions
 | *Getter* | get_param_curve()      |
 | *Getter* | get_param_curve()      |
 +----------+------------------------+
 +----------+------------------------+
 
 
+Each particle's rotation will be animated along this :ref:`Curve<class_Curve>`.
+
 .. _class_CPUParticles_property_angle_random:
 .. _class_CPUParticles_property_angle_random:
 
 
 - :ref:`float<class_float>` **angle_random**
 - :ref:`float<class_float>` **angle_random**
@@ -302,6 +329,8 @@ Property Descriptions
 | *Getter* | get_param_randomness()      |
 | *Getter* | get_param_randomness()      |
 +----------+-----------------------------+
 +----------+-----------------------------+
 
 
+Rotation randomness ratio. Default value: ``0``.
+
 .. _class_CPUParticles_property_angular_velocity:
 .. _class_CPUParticles_property_angular_velocity:
 
 
 - :ref:`float<class_float>` **angular_velocity**
 - :ref:`float<class_float>` **angular_velocity**
@@ -312,6 +341,8 @@ Property Descriptions
 | *Getter* | get_param()      |
 | *Getter* | get_param()      |
 +----------+------------------+
 +----------+------------------+
 
 
+Initial angular velocity applied to each particle. Sets the speed of rotation of the particle.
+
 .. _class_CPUParticles_property_angular_velocity_curve:
 .. _class_CPUParticles_property_angular_velocity_curve:
 
 
 - :ref:`Curve<class_Curve>` **angular_velocity_curve**
 - :ref:`Curve<class_Curve>` **angular_velocity_curve**
@@ -322,6 +353,8 @@ Property Descriptions
 | *Getter* | get_param_curve()      |
 | *Getter* | get_param_curve()      |
 +----------+------------------------+
 +----------+------------------------+
 
 
+Each particle's angular velocity will vary along this :ref:`Curve<class_Curve>`.
+
 .. _class_CPUParticles_property_angular_velocity_random:
 .. _class_CPUParticles_property_angular_velocity_random:
 
 
 - :ref:`float<class_float>` **angular_velocity_random**
 - :ref:`float<class_float>` **angular_velocity_random**
@@ -332,6 +365,8 @@ Property Descriptions
 | *Getter* | get_param_randomness()      |
 | *Getter* | get_param_randomness()      |
 +----------+-----------------------------+
 +----------+-----------------------------+
 
 
+Angular velocity randomness ratio. Default value: ``0``.
+
 .. _class_CPUParticles_property_anim_offset:
 .. _class_CPUParticles_property_anim_offset:
 
 
 - :ref:`float<class_float>` **anim_offset**
 - :ref:`float<class_float>` **anim_offset**
@@ -342,6 +377,8 @@ Property Descriptions
 | *Getter* | get_param()      |
 | *Getter* | get_param()      |
 +----------+------------------+
 +----------+------------------+
 
 
+Particle animation offset.
+
 .. _class_CPUParticles_property_anim_offset_curve:
 .. _class_CPUParticles_property_anim_offset_curve:
 
 
 - :ref:`Curve<class_Curve>` **anim_offset_curve**
 - :ref:`Curve<class_Curve>` **anim_offset_curve**
@@ -352,6 +389,8 @@ Property Descriptions
 | *Getter* | get_param_curve()      |
 | *Getter* | get_param_curve()      |
 +----------+------------------------+
 +----------+------------------------+
 
 
+Each particle's animation offset will vary along this :ref:`Curve<class_Curve>`.
+
 .. _class_CPUParticles_property_anim_offset_random:
 .. _class_CPUParticles_property_anim_offset_random:
 
 
 - :ref:`float<class_float>` **anim_offset_random**
 - :ref:`float<class_float>` **anim_offset_random**
@@ -362,6 +401,8 @@ Property Descriptions
 | *Getter* | get_param_randomness()      |
 | *Getter* | get_param_randomness()      |
 +----------+-----------------------------+
 +----------+-----------------------------+
 
 
+Animation offset randomness ratio. Default value: ``0``.
+
 .. _class_CPUParticles_property_anim_speed:
 .. _class_CPUParticles_property_anim_speed:
 
 
 - :ref:`float<class_float>` **anim_speed**
 - :ref:`float<class_float>` **anim_speed**
@@ -372,6 +413,8 @@ Property Descriptions
 | *Getter* | get_param()      |
 | *Getter* | get_param()      |
 +----------+------------------+
 +----------+------------------+
 
 
+Particle animation speed.
+
 .. _class_CPUParticles_property_anim_speed_curve:
 .. _class_CPUParticles_property_anim_speed_curve:
 
 
 - :ref:`Curve<class_Curve>` **anim_speed_curve**
 - :ref:`Curve<class_Curve>` **anim_speed_curve**
@@ -382,6 +425,8 @@ Property Descriptions
 | *Getter* | get_param_curve()      |
 | *Getter* | get_param_curve()      |
 +----------+------------------------+
 +----------+------------------------+
 
 
+Each particle's animation speed will vary along this :ref:`Curve<class_Curve>`.
+
 .. _class_CPUParticles_property_anim_speed_random:
 .. _class_CPUParticles_property_anim_speed_random:
 
 
 - :ref:`float<class_float>` **anim_speed_random**
 - :ref:`float<class_float>` **anim_speed_random**
@@ -392,6 +437,8 @@ Property Descriptions
 | *Getter* | get_param_randomness()      |
 | *Getter* | get_param_randomness()      |
 +----------+-----------------------------+
 +----------+-----------------------------+
 
 
+Animation speed randomness ratio. Default value: ``0``.
+
 .. _class_CPUParticles_property_color:
 .. _class_CPUParticles_property_color:
 
 
 - :ref:`Color<class_Color>` **color**
 - :ref:`Color<class_Color>` **color**
@@ -402,6 +449,8 @@ Property Descriptions
 | *Getter* | get_color()      |
 | *Getter* | get_color()      |
 +----------+------------------+
 +----------+------------------+
 
 
+Unused for 3D particles.
+
 .. _class_CPUParticles_property_color_ramp:
 .. _class_CPUParticles_property_color_ramp:
 
 
 - :ref:`Gradient<class_Gradient>` **color_ramp**
 - :ref:`Gradient<class_Gradient>` **color_ramp**
@@ -412,7 +461,7 @@ Property Descriptions
 | *Getter* | get_color_ramp()      |
 | *Getter* | get_color_ramp()      |
 +----------+-----------------------+
 +----------+-----------------------+
 
 
-Each particle's vertex color will vary along this :ref:`GradientTexture<class_GradientTexture>`.
+Unused for 3D particles.
 
 
 .. _class_CPUParticles_property_damping:
 .. _class_CPUParticles_property_damping:
 
 
@@ -424,6 +473,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_param()      |
 | *Getter* | get_param()      |
 +----------+------------------+
 +----------+------------------+
 
 
+The rate at which particles lose velocity.
+
 .. _class_CPUParticles_property_damping_curve:
 .. _class_CPUParticles_property_damping_curve:
 
 
 - :ref:`Curve<class_Curve>` **damping_curve**
 - :ref:`Curve<class_Curve>` **damping_curve**
@@ -434,6 +485,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_param_curve()      |
 | *Getter* | get_param_curve()      |
 +----------+------------------------+
 +----------+------------------------+
 
 
+Damping will vary along this :ref:`Curve<class_Curve>`.
+
 .. _class_CPUParticles_property_damping_random:
 .. _class_CPUParticles_property_damping_random:
 
 
 - :ref:`float<class_float>` **damping_random**
 - :ref:`float<class_float>` **damping_random**
@@ -444,6 +497,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_param_randomness()      |
 | *Getter* | get_param_randomness()      |
 +----------+-----------------------------+
 +----------+-----------------------------+
 
 
+Damping randomness ratio. Default value: ``0``.
+
 .. _class_CPUParticles_property_draw_order:
 .. _class_CPUParticles_property_draw_order:
 
 
 - :ref:`DrawOrder<enum_CPUParticles_DrawOrder>` **draw_order**
 - :ref:`DrawOrder<enum_CPUParticles_DrawOrder>` **draw_order**
@@ -454,6 +509,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_draw_order()      |
 | *Getter* | get_draw_order()      |
 +----------+-----------------------+
 +----------+-----------------------+
 
 
+Particle draw order. Uses :ref:`DrawOrder<enum_CPUParticles_DrawOrder>` values. Default value: :ref:`DRAW_ORDER_INDEX<class_CPUParticles_constant_DRAW_ORDER_INDEX>`.
+
 .. _class_CPUParticles_property_emission_box_extents:
 .. _class_CPUParticles_property_emission_box_extents:
 
 
 - :ref:`Vector3<class_Vector3>` **emission_box_extents**
 - :ref:`Vector3<class_Vector3>` **emission_box_extents**
@@ -464,6 +521,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_emission_box_extents()      |
 | *Getter* | get_emission_box_extents()      |
 +----------+---------------------------------+
 +----------+---------------------------------+
 
 
+The rectangle's extents if :ref:`emission_shape<class_CPUParticles_property_emission_shape>` is set to :ref:`EMISSION_SHAPE_BOX<class_CPUParticles_constant_EMISSION_SHAPE_BOX>`.
+
 .. _class_CPUParticles_property_emission_colors:
 .. _class_CPUParticles_property_emission_colors:
 
 
 - :ref:`PoolColorArray<class_PoolColorArray>` **emission_colors**
 - :ref:`PoolColorArray<class_PoolColorArray>` **emission_colors**
@@ -504,6 +563,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_emission_shape()      |
 | *Getter* | get_emission_shape()      |
 +----------+---------------------------+
 +----------+---------------------------+
 
 
+Particles will be emitted inside this region. Use :ref:`EmissionShape<enum_CPUParticles_EmissionShape>` for values. Default value: :ref:`EMISSION_SHAPE_POINT<class_CPUParticles_constant_EMISSION_SHAPE_POINT>`.
+
 .. _class_CPUParticles_property_emission_sphere_radius:
 .. _class_CPUParticles_property_emission_sphere_radius:
 
 
 - :ref:`float<class_float>` **emission_sphere_radius**
 - :ref:`float<class_float>` **emission_sphere_radius**
@@ -514,6 +575,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_emission_sphere_radius()      |
 | *Getter* | get_emission_sphere_radius()      |
 +----------+-----------------------------------+
 +----------+-----------------------------------+
 
 
+The sphere's radius if :ref:`EmissionShape<enum_CPUParticles_EmissionShape>` is set to :ref:`EMISSION_SHAPE_SPHERE<class_CPUParticles_constant_EMISSION_SHAPE_SPHERE>`.
+
 .. _class_CPUParticles_property_emitting:
 .. _class_CPUParticles_property_emitting:
 
 
 - :ref:`bool<class_bool>` **emitting**
 - :ref:`bool<class_bool>` **emitting**
@@ -524,6 +587,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | is_emitting()       |
 | *Getter* | is_emitting()       |
 +----------+---------------------+
 +----------+---------------------+
 
 
+If ``true``, particles are being emitted. Default value: ``true``.
+
 .. _class_CPUParticles_property_explosiveness:
 .. _class_CPUParticles_property_explosiveness:
 
 
 - :ref:`float<class_float>` **explosiveness**
 - :ref:`float<class_float>` **explosiveness**
@@ -534,6 +599,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_explosiveness_ratio()      |
 | *Getter* | get_explosiveness_ratio()      |
 +----------+--------------------------------+
 +----------+--------------------------------+
 
 
+How rapidly particles in an emission cycle are emitted. If greater than ``0``, there will be a gap in emissions before the next cycle begins. Default value: ``0``.
+
 .. _class_CPUParticles_property_fixed_fps:
 .. _class_CPUParticles_property_fixed_fps:
 
 
 - :ref:`int<class_int>` **fixed_fps**
 - :ref:`int<class_int>` **fixed_fps**
@@ -544,6 +611,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_fixed_fps()      |
 | *Getter* | get_fixed_fps()      |
 +----------+----------------------+
 +----------+----------------------+
 
 
+The particle system's frame rate is fixed to a value. For instance, changing the value to 2 will make the particles render at 2 frames per second. Note this does not slow down the particle system itself.
+
 .. _class_CPUParticles_property_flag_align_y:
 .. _class_CPUParticles_property_flag_align_y:
 
 
 - :ref:`bool<class_bool>` **flag_align_y**
 - :ref:`bool<class_bool>` **flag_align_y**
@@ -554,6 +623,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_particle_flag()      |
 | *Getter* | get_particle_flag()      |
 +----------+--------------------------+
 +----------+--------------------------+
 
 
+Align y-axis of particle with the direction of its velocity.
+
 .. _class_CPUParticles_property_flag_disable_z:
 .. _class_CPUParticles_property_flag_disable_z:
 
 
 - :ref:`bool<class_bool>` **flag_disable_z**
 - :ref:`bool<class_bool>` **flag_disable_z**
@@ -564,6 +635,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_particle_flag()      |
 | *Getter* | get_particle_flag()      |
 +----------+--------------------------+
 +----------+--------------------------+
 
 
+If ``true``, particles will not move on the z axis. Default value: ``false``.
+
 .. _class_CPUParticles_property_flag_rotate_y:
 .. _class_CPUParticles_property_flag_rotate_y:
 
 
 - :ref:`bool<class_bool>` **flag_rotate_y**
 - :ref:`bool<class_bool>` **flag_rotate_y**
@@ -574,6 +647,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_particle_flag()      |
 | *Getter* | get_particle_flag()      |
 +----------+--------------------------+
 +----------+--------------------------+
 
 
+If ``true``, particles rotate around y-axis by :ref:`angle<class_CPUParticles_property_angle>`.
+
 .. _class_CPUParticles_property_flatness:
 .. _class_CPUParticles_property_flatness:
 
 
 - :ref:`float<class_float>` **flatness**
 - :ref:`float<class_float>` **flatness**
@@ -584,6 +659,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_flatness()      |
 | *Getter* | get_flatness()      |
 +----------+---------------------+
 +----------+---------------------+
 
 
+Amount of :ref:`spread<class_CPUParticles_property_spread>` in Y/Z plane. A value of ``1`` restricts particles to X/Z plane. Default ``0``.
+
 .. _class_CPUParticles_property_fract_delta:
 .. _class_CPUParticles_property_fract_delta:
 
 
 - :ref:`bool<class_bool>` **fract_delta**
 - :ref:`bool<class_bool>` **fract_delta**
@@ -594,6 +671,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_fractional_delta()      |
 | *Getter* | get_fractional_delta()      |
 +----------+-----------------------------+
 +----------+-----------------------------+
 
 
+If ``true``, results in fractional delta calculation which has a smoother particles display effect. Default value: ``true``
+
 .. _class_CPUParticles_property_gravity:
 .. _class_CPUParticles_property_gravity:
 
 
 - :ref:`Vector3<class_Vector3>` **gravity**
 - :ref:`Vector3<class_Vector3>` **gravity**
@@ -604,6 +683,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_gravity()      |
 | *Getter* | get_gravity()      |
 +----------+--------------------+
 +----------+--------------------+
 
 
+Gravity applied to every particle. Default value: ``(0, -9.8, 0)``.
+
 .. _class_CPUParticles_property_hue_variation:
 .. _class_CPUParticles_property_hue_variation:
 
 
 - :ref:`float<class_float>` **hue_variation**
 - :ref:`float<class_float>` **hue_variation**
@@ -614,6 +695,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_param()      |
 | *Getter* | get_param()      |
 +----------+------------------+
 +----------+------------------+
 
 
+Initial hue variation applied to each particle.
+
 .. _class_CPUParticles_property_hue_variation_curve:
 .. _class_CPUParticles_property_hue_variation_curve:
 
 
 - :ref:`Curve<class_Curve>` **hue_variation_curve**
 - :ref:`Curve<class_Curve>` **hue_variation_curve**
@@ -624,6 +707,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_param_curve()      |
 | *Getter* | get_param_curve()      |
 +----------+------------------------+
 +----------+------------------------+
 
 
+Each particle's hue will vary along this :ref:`Curve<class_Curve>`.
+
 .. _class_CPUParticles_property_hue_variation_random:
 .. _class_CPUParticles_property_hue_variation_random:
 
 
 - :ref:`float<class_float>` **hue_variation_random**
 - :ref:`float<class_float>` **hue_variation_random**
@@ -634,6 +719,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_param_randomness()      |
 | *Getter* | get_param_randomness()      |
 +----------+-----------------------------+
 +----------+-----------------------------+
 
 
+Hue variation randomness ratio. Default value: ``0``.
+
 .. _class_CPUParticles_property_initial_velocity:
 .. _class_CPUParticles_property_initial_velocity:
 
 
 - :ref:`float<class_float>` **initial_velocity**
 - :ref:`float<class_float>` **initial_velocity**
@@ -644,6 +731,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_param()      |
 | *Getter* | get_param()      |
 +----------+------------------+
 +----------+------------------+
 
 
+Initial velocity magnitude for each particle. Direction comes from :ref:`spread<class_CPUParticles_property_spread>` and the node's orientation.
+
 .. _class_CPUParticles_property_initial_velocity_random:
 .. _class_CPUParticles_property_initial_velocity_random:
 
 
 - :ref:`float<class_float>` **initial_velocity_random**
 - :ref:`float<class_float>` **initial_velocity_random**
@@ -654,6 +743,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_param_randomness()      |
 | *Getter* | get_param_randomness()      |
 +----------+-----------------------------+
 +----------+-----------------------------+
 
 
+Initial velocity randomness ratio. Default value: ``0``.
+
 .. _class_CPUParticles_property_lifetime:
 .. _class_CPUParticles_property_lifetime:
 
 
 - :ref:`float<class_float>` **lifetime**
 - :ref:`float<class_float>` **lifetime**
@@ -664,6 +755,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_lifetime()      |
 | *Getter* | get_lifetime()      |
 +----------+---------------------+
 +----------+---------------------+
 
 
+Amount of time each particle will exist. Default value: ``1``.
+
 .. _class_CPUParticles_property_linear_accel:
 .. _class_CPUParticles_property_linear_accel:
 
 
 - :ref:`float<class_float>` **linear_accel**
 - :ref:`float<class_float>` **linear_accel**
@@ -674,6 +767,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_param()      |
 | *Getter* | get_param()      |
 +----------+------------------+
 +----------+------------------+
 
 
+Linear acceleration applied to each particle in the direction of motion.
+
 .. _class_CPUParticles_property_linear_accel_curve:
 .. _class_CPUParticles_property_linear_accel_curve:
 
 
 - :ref:`Curve<class_Curve>` **linear_accel_curve**
 - :ref:`Curve<class_Curve>` **linear_accel_curve**
@@ -684,6 +779,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_param_curve()      |
 | *Getter* | get_param_curve()      |
 +----------+------------------------+
 +----------+------------------------+
 
 
+Each particle's linear acceleration will vary along this :ref:`Curve<class_Curve>`.
+
 .. _class_CPUParticles_property_linear_accel_random:
 .. _class_CPUParticles_property_linear_accel_random:
 
 
 - :ref:`float<class_float>` **linear_accel_random**
 - :ref:`float<class_float>` **linear_accel_random**
@@ -694,6 +791,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_param_randomness()      |
 | *Getter* | get_param_randomness()      |
 +----------+-----------------------------+
 +----------+-----------------------------+
 
 
+Linear acceleration randomness ratio. Default value: ``0``.
+
 .. _class_CPUParticles_property_local_coords:
 .. _class_CPUParticles_property_local_coords:
 
 
 - :ref:`bool<class_bool>` **local_coords**
 - :ref:`bool<class_bool>` **local_coords**
@@ -704,6 +803,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_use_local_coordinates()      |
 | *Getter* | get_use_local_coordinates()      |
 +----------+----------------------------------+
 +----------+----------------------------------+
 
 
+If ``true``, particles use the parent node's coordinate space. If ``false``, they use global coordinates. Default value: ``true``.
+
 .. _class_CPUParticles_property_mesh:
 .. _class_CPUParticles_property_mesh:
 
 
 - :ref:`Mesh<class_Mesh>` **mesh**
 - :ref:`Mesh<class_Mesh>` **mesh**
@@ -714,6 +815,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_mesh()      |
 | *Getter* | get_mesh()      |
 +----------+-----------------+
 +----------+-----------------+
 
 
+The :ref:`Mesh<class_Mesh>` used for each particle. If ``null``, particles will be spheres.
+
 .. _class_CPUParticles_property_one_shot:
 .. _class_CPUParticles_property_one_shot:
 
 
 - :ref:`bool<class_bool>` **one_shot**
 - :ref:`bool<class_bool>` **one_shot**
@@ -724,6 +827,46 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_one_shot()      |
 | *Getter* | get_one_shot()      |
 +----------+---------------------+
 +----------+---------------------+
 
 
+If ``true``, only one emission cycle occurs. If set ``true`` during a cycle, emission will stop at the cycle's end. Default value: ``false``.
+
+.. _class_CPUParticles_property_orbit_velocity:
+
+- :ref:`float<class_float>` **orbit_velocity**
+
++----------+------------------+
+| *Setter* | set_param(value) |
++----------+------------------+
+| *Getter* | get_param()      |
++----------+------------------+
+
+Orbital velocity applied to each particle. Makes the particles circle around origin in the local XY plane. Specified in number of full rotations around origin per second.
+
+This property is only available when :ref:`flag_disable_z<class_CPUParticles_property_flag_disable_z>` is ``true``.
+
+.. _class_CPUParticles_property_orbit_velocity_curve:
+
+- :ref:`Curve<class_Curve>` **orbit_velocity_curve**
+
++----------+------------------------+
+| *Setter* | set_param_curve(value) |
++----------+------------------------+
+| *Getter* | get_param_curve()      |
++----------+------------------------+
+
+Each particle's orbital velocity will vary along this :ref:`Curve<class_Curve>`.
+
+.. _class_CPUParticles_property_orbit_velocity_random:
+
+- :ref:`float<class_float>` **orbit_velocity_random**
+
++----------+-----------------------------+
+| *Setter* | set_param_randomness(value) |
++----------+-----------------------------+
+| *Getter* | get_param_randomness()      |
++----------+-----------------------------+
+
+Orbital velocity randomness ratio. Default value: ``0``.
+
 .. _class_CPUParticles_property_preprocess:
 .. _class_CPUParticles_property_preprocess:
 
 
 - :ref:`float<class_float>` **preprocess**
 - :ref:`float<class_float>` **preprocess**
@@ -734,6 +877,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_pre_process_time()      |
 | *Getter* | get_pre_process_time()      |
 +----------+-----------------------------+
 +----------+-----------------------------+
 
 
+Particle system starts as if it had already run for this many seconds.
+
 .. _class_CPUParticles_property_radial_accel:
 .. _class_CPUParticles_property_radial_accel:
 
 
 - :ref:`float<class_float>` **radial_accel**
 - :ref:`float<class_float>` **radial_accel**
@@ -744,6 +889,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_param()      |
 | *Getter* | get_param()      |
 +----------+------------------+
 +----------+------------------+
 
 
+Radial acceleration applied to each particle. Makes particle accelerate away from origin.
+
 .. _class_CPUParticles_property_radial_accel_curve:
 .. _class_CPUParticles_property_radial_accel_curve:
 
 
 - :ref:`Curve<class_Curve>` **radial_accel_curve**
 - :ref:`Curve<class_Curve>` **radial_accel_curve**
@@ -754,6 +901,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_param_curve()      |
 | *Getter* | get_param_curve()      |
 +----------+------------------------+
 +----------+------------------------+
 
 
+Each particle's radial acceleration will vary along this :ref:`Curve<class_Curve>`.
+
 .. _class_CPUParticles_property_radial_accel_random:
 .. _class_CPUParticles_property_radial_accel_random:
 
 
 - :ref:`float<class_float>` **radial_accel_random**
 - :ref:`float<class_float>` **radial_accel_random**
@@ -764,6 +913,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_param_randomness()      |
 | *Getter* | get_param_randomness()      |
 +----------+-----------------------------+
 +----------+-----------------------------+
 
 
+Radial acceleration randomness ratio. Default value: ``0``.
+
 .. _class_CPUParticles_property_randomness:
 .. _class_CPUParticles_property_randomness:
 
 
 - :ref:`float<class_float>` **randomness**
 - :ref:`float<class_float>` **randomness**
@@ -774,6 +925,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_randomness_ratio()      |
 | *Getter* | get_randomness_ratio()      |
 +----------+-----------------------------+
 +----------+-----------------------------+
 
 
+Emission lifetime randomness ratio. Default value: ``0``.
+
 .. _class_CPUParticles_property_scale_amount:
 .. _class_CPUParticles_property_scale_amount:
 
 
 - :ref:`float<class_float>` **scale_amount**
 - :ref:`float<class_float>` **scale_amount**
@@ -784,6 +937,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_param()      |
 | *Getter* | get_param()      |
 +----------+------------------+
 +----------+------------------+
 
 
+Initial scale applied to each particle.
+
 .. _class_CPUParticles_property_scale_amount_curve:
 .. _class_CPUParticles_property_scale_amount_curve:
 
 
 - :ref:`Curve<class_Curve>` **scale_amount_curve**
 - :ref:`Curve<class_Curve>` **scale_amount_curve**
@@ -794,6 +949,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_param_curve()      |
 | *Getter* | get_param_curve()      |
 +----------+------------------------+
 +----------+------------------------+
 
 
+Each particle's scale will vary along this :ref:`Curve<class_Curve>`.
+
 .. _class_CPUParticles_property_scale_amount_random:
 .. _class_CPUParticles_property_scale_amount_random:
 
 
 - :ref:`float<class_float>` **scale_amount_random**
 - :ref:`float<class_float>` **scale_amount_random**
@@ -804,6 +961,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_param_randomness()      |
 | *Getter* | get_param_randomness()      |
 +----------+-----------------------------+
 +----------+-----------------------------+
 
 
+Scale randomness ratio. Default value: ``0``.
+
 .. _class_CPUParticles_property_speed_scale:
 .. _class_CPUParticles_property_speed_scale:
 
 
 - :ref:`float<class_float>` **speed_scale**
 - :ref:`float<class_float>` **speed_scale**
@@ -814,6 +973,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_speed_scale()      |
 | *Getter* | get_speed_scale()      |
 +----------+------------------------+
 +----------+------------------------+
 
 
+Particle system's running speed scaling ratio. Default value: ``1``. A value of ``0`` can be used to pause the particles.
+
 .. _class_CPUParticles_property_spread:
 .. _class_CPUParticles_property_spread:
 
 
 - :ref:`float<class_float>` **spread**
 - :ref:`float<class_float>` **spread**
@@ -824,6 +985,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_spread()      |
 | *Getter* | get_spread()      |
 +----------+-------------------+
 +----------+-------------------+
 
 
+Each particle's initial direction range from ``+spread`` to ``-spread`` degrees. Default value: ``45``.
+
 .. _class_CPUParticles_property_tangential_accel:
 .. _class_CPUParticles_property_tangential_accel:
 
 
 - :ref:`float<class_float>` **tangential_accel**
 - :ref:`float<class_float>` **tangential_accel**
@@ -834,6 +997,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_param()      |
 | *Getter* | get_param()      |
 +----------+------------------+
 +----------+------------------+
 
 
+Tangential acceleration applied to each particle. Tangential acceleration is perpendicular to the particle's velocity giving the particles a swirling motion.
+
 .. _class_CPUParticles_property_tangential_accel_curve:
 .. _class_CPUParticles_property_tangential_accel_curve:
 
 
 - :ref:`Curve<class_Curve>` **tangential_accel_curve**
 - :ref:`Curve<class_Curve>` **tangential_accel_curve**
@@ -844,6 +1009,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_param_curve()      |
 | *Getter* | get_param_curve()      |
 +----------+------------------------+
 +----------+------------------------+
 
 
+Each particle's tangential acceleration will vary along this :ref:`Curve<class_Curve>`.
+
 .. _class_CPUParticles_property_tangential_accel_random:
 .. _class_CPUParticles_property_tangential_accel_random:
 
 
 - :ref:`float<class_float>` **tangential_accel_random**
 - :ref:`float<class_float>` **tangential_accel_random**
@@ -854,6 +1021,8 @@ Each particle's vertex color will vary along this :ref:`GradientTexture<class_Gr
 | *Getter* | get_param_randomness()      |
 | *Getter* | get_param_randomness()      |
 +----------+-----------------------------+
 +----------+-----------------------------+
 
 
+Tangential acceleration randomness ratio. Default value: ``0``.
+
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
 
 
@@ -861,7 +1030,11 @@ Method Descriptions
 
 
 - void **convert_from_particles** **(** :ref:`Node<class_Node>` particles **)**
 - void **convert_from_particles** **(** :ref:`Node<class_Node>` particles **)**
 
 
+Sets this node's properties to match a given :ref:`Particles<class_Particles>` node with an assigned :ref:`ParticlesMaterial<class_ParticlesMaterial>`.
+
 .. _class_CPUParticles_method_restart:
 .. _class_CPUParticles_method_restart:
 
 
 - void **restart** **(** **)**
 - void **restart** **(** **)**
 
 
+Restarts the particle emitter.
+

+ 197 - 23
classes/class_cpuparticles2d.rst

@@ -14,7 +14,7 @@ CPUParticles2D
 Brief Description
 Brief Description
 -----------------
 -----------------
 
 
-
+CPU-based 2D particle emitter.
 
 
 Properties
 Properties
 ----------
 ----------
@@ -108,6 +108,12 @@ Properties
 +---------------------------------------------------------+---------------------------------------------------------------------------------------+
 +---------------------------------------------------------+---------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                                 | :ref:`one_shot<class_CPUParticles2D_property_one_shot>`                               |
 | :ref:`bool<class_bool>`                                 | :ref:`one_shot<class_CPUParticles2D_property_one_shot>`                               |
 +---------------------------------------------------------+---------------------------------------------------------------------------------------+
 +---------------------------------------------------------+---------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                               | :ref:`orbit_velocity<class_CPUParticles2D_property_orbit_velocity>`                   |
++---------------------------------------------------------+---------------------------------------------------------------------------------------+
+| :ref:`Curve<class_Curve>`                               | :ref:`orbit_velocity_curve<class_CPUParticles2D_property_orbit_velocity_curve>`       |
++---------------------------------------------------------+---------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                               | :ref:`orbit_velocity_random<class_CPUParticles2D_property_orbit_velocity_random>`     |
++---------------------------------------------------------+---------------------------------------------------------------------------------------+
 | :ref:`float<class_float>`                               | :ref:`preprocess<class_CPUParticles2D_property_preprocess>`                           |
 | :ref:`float<class_float>`                               | :ref:`preprocess<class_CPUParticles2D_property_preprocess>`                           |
 +---------------------------------------------------------+---------------------------------------------------------------------------------------+
 +---------------------------------------------------------+---------------------------------------------------------------------------------------+
 | :ref:`float<class_float>`                               | :ref:`radial_accel<class_CPUParticles2D_property_radial_accel>`                       |
 | :ref:`float<class_float>`                               | :ref:`radial_accel<class_CPUParticles2D_property_radial_accel>`                       |
@@ -157,9 +163,9 @@ Enumerations
 
 
 enum **DrawOrder**:
 enum **DrawOrder**:
 
 
-- **DRAW_ORDER_INDEX** = **0**
+- **DRAW_ORDER_INDEX** = **0** --- Particles are drawn in the order emitted.
 
 
-- **DRAW_ORDER_LIFETIME** = **1**
+- **DRAW_ORDER_LIFETIME** = **1** --- Particles are drawn in order of remaining lifetime.
 
 
 .. _enum_CPUParticles2D_Parameter:
 .. _enum_CPUParticles2D_Parameter:
 
 
@@ -191,43 +197,51 @@ enum **DrawOrder**:
 
 
 enum **Parameter**:
 enum **Parameter**:
 
 
-- **PARAM_INITIAL_LINEAR_VELOCITY** = **0**
+- **PARAM_INITIAL_LINEAR_VELOCITY** = **0** --- Use with :ref:`set_param<class_CPUParticles2D_method_set_param>`, :ref:`set_param_randomness<class_CPUParticles2D_method_set_param_randomness>`, and :ref:`set_param_texture<class_CPUParticles2D_method_set_param_texture>` to set initial velocity properties.
 
 
-- **PARAM_ANGULAR_VELOCITY** = **1**
+- **PARAM_ANGULAR_VELOCITY** = **1** --- Use with :ref:`set_param<class_CPUParticles2D_method_set_param>`, :ref:`set_param_randomness<class_CPUParticles2D_method_set_param_randomness>`, and :ref:`set_param_texture<class_CPUParticles2D_method_set_param_texture>` to set angular velocity properties.
 
 
-- **PARAM_ORBIT_VELOCITY** = **2**
+- **PARAM_ORBIT_VELOCITY** = **2** --- Use with :ref:`set_param<class_CPUParticles2D_method_set_param>`, :ref:`set_param_randomness<class_CPUParticles2D_method_set_param_randomness>`, and :ref:`set_param_texture<class_CPUParticles2D_method_set_param_texture>` to set orbital velocity properties.
 
 
-- **PARAM_LINEAR_ACCEL** = **3**
+- **PARAM_LINEAR_ACCEL** = **3** --- Use with :ref:`set_param<class_CPUParticles2D_method_set_param>`, :ref:`set_param_randomness<class_CPUParticles2D_method_set_param_randomness>`, and :ref:`set_param_texture<class_CPUParticles2D_method_set_param_texture>` to set linear acceleration properties.
 
 
-- **PARAM_RADIAL_ACCEL** = **4**
+- **PARAM_RADIAL_ACCEL** = **4** --- Use with :ref:`set_param<class_CPUParticles2D_method_set_param>`, :ref:`set_param_randomness<class_CPUParticles2D_method_set_param_randomness>`, and :ref:`set_param_texture<class_CPUParticles2D_method_set_param_texture>` to set radial acceleration properties.
 
 
-- **PARAM_TANGENTIAL_ACCEL** = **5**
+- **PARAM_TANGENTIAL_ACCEL** = **5** --- Use with :ref:`set_param<class_CPUParticles2D_method_set_param>`, :ref:`set_param_randomness<class_CPUParticles2D_method_set_param_randomness>`, and :ref:`set_param_texture<class_CPUParticles2D_method_set_param_texture>` to set tangential acceleration properties.
 
 
-- **PARAM_DAMPING** = **6**
+- **PARAM_DAMPING** = **6** --- Use with :ref:`set_param<class_CPUParticles2D_method_set_param>`, :ref:`set_param_randomness<class_CPUParticles2D_method_set_param_randomness>`, and :ref:`set_param_texture<class_CPUParticles2D_method_set_param_texture>` to set damping properties.
 
 
-- **PARAM_ANGLE** = **7**
+- **PARAM_ANGLE** = **7** --- Use with :ref:`set_param<class_CPUParticles2D_method_set_param>`, :ref:`set_param_randomness<class_CPUParticles2D_method_set_param_randomness>`, and :ref:`set_param_texture<class_CPUParticles2D_method_set_param_texture>` to set angle properties.
 
 
-- **PARAM_SCALE** = **8**
+- **PARAM_SCALE** = **8** --- Use with :ref:`set_param<class_CPUParticles2D_method_set_param>`, :ref:`set_param_randomness<class_CPUParticles2D_method_set_param_randomness>`, and :ref:`set_param_texture<class_CPUParticles2D_method_set_param_texture>` to set scale properties.
 
 
-- **PARAM_HUE_VARIATION** = **9**
+- **PARAM_HUE_VARIATION** = **9** --- Use with :ref:`set_param<class_CPUParticles2D_method_set_param>`, :ref:`set_param_randomness<class_CPUParticles2D_method_set_param_randomness>`, and :ref:`set_param_texture<class_CPUParticles2D_method_set_param_texture>` to set hue variation properties.
 
 
-- **PARAM_ANIM_SPEED** = **10**
+- **PARAM_ANIM_SPEED** = **10** --- Use with :ref:`set_param<class_CPUParticles2D_method_set_param>`, :ref:`set_param_randomness<class_CPUParticles2D_method_set_param_randomness>`, and :ref:`set_param_texture<class_CPUParticles2D_method_set_param_texture>` to set animation speed properties.
 
 
-- **PARAM_ANIM_OFFSET** = **11**
+- **PARAM_ANIM_OFFSET** = **11** --- Use with :ref:`set_param<class_CPUParticles2D_method_set_param>`, :ref:`set_param_randomness<class_CPUParticles2D_method_set_param_randomness>`, and :ref:`set_param_texture<class_CPUParticles2D_method_set_param_texture>` to set animation offset properties.
 
 
-- **PARAM_MAX** = **12**
+- **PARAM_MAX** = **12** --- Represents the size of the :ref:`Parameter<enum_CPUParticles2D_Parameter>` enum.
 
 
 .. _enum_CPUParticles2D_Flags:
 .. _enum_CPUParticles2D_Flags:
 
 
 .. _class_CPUParticles2D_constant_FLAG_ALIGN_Y_TO_VELOCITY:
 .. _class_CPUParticles2D_constant_FLAG_ALIGN_Y_TO_VELOCITY:
 
 
+.. _class_CPUParticles2D_constant_FLAG_ROTATE_Y:
+
+.. _class_CPUParticles2D_constant_FLAG_DISABLE_Z:
+
 .. _class_CPUParticles2D_constant_FLAG_MAX:
 .. _class_CPUParticles2D_constant_FLAG_MAX:
 
 
 enum **Flags**:
 enum **Flags**:
 
 
-- **FLAG_ALIGN_Y_TO_VELOCITY** = **0**
+- **FLAG_ALIGN_Y_TO_VELOCITY** = **0** --- Use with :ref:`set_flag<class_CPUParticles2D_method_set_flag>` to set :ref:`flag_align_y<class_CPUParticles2D_property_flag_align_y>`.
 
 
-- **FLAG_MAX** = **1**
+- **FLAG_ROTATE_Y** = **1** --- Present for consistency with 3D particle nodes, not used in 2D.
+
+- **FLAG_DISABLE_Z** = **2** --- Present for consistency with 3D particle nodes, not used in 2D.
+
+- **FLAG_MAX** = **3** --- Represents the size of the :ref:`Flags<enum_CPUParticles2D_Flags>` enum.
 
 
 .. _enum_CPUParticles2D_EmissionShape:
 .. _enum_CPUParticles2D_EmissionShape:
 
 
@@ -243,15 +257,27 @@ enum **Flags**:
 
 
 enum **EmissionShape**:
 enum **EmissionShape**:
 
 
-- **EMISSION_SHAPE_POINT** = **0**
+- **EMISSION_SHAPE_POINT** = **0** --- All particles will be emitted from a single point.
+
+- **EMISSION_SHAPE_CIRCLE** = **1** --- Particles will be emitted on the perimeter of a circle.
+
+- **EMISSION_SHAPE_RECTANGLE** = **2** --- Particles will be emitted in the area of a rectangle.
+
+- **EMISSION_SHAPE_POINTS** = **3** --- Particles will be emitted at a position chosen randomly among :ref:`emission_points<class_CPUParticles2D_property_emission_points>`. Particle color will be modulated by :ref:`emission_colors<class_CPUParticles2D_property_emission_colors>`.
+
+- **EMISSION_SHAPE_DIRECTED_POINTS** = **4** --- Particles will be emitted at a position chosen randomly among :ref:`emission_points<class_CPUParticles2D_property_emission_points>`. Particle velocity and rotation will be set based on :ref:`emission_normals<class_CPUParticles2D_property_emission_normals>`. Particle color will be modulated by :ref:`emission_colors<class_CPUParticles2D_property_emission_colors>`.
 
 
-- **EMISSION_SHAPE_CIRCLE** = **1**
+Description
+-----------
 
 
-- **EMISSION_SHAPE_RECTANGLE** = **2**
+CPU-based 2D particle node used to create a variety of particle systems and effects.
 
 
-- **EMISSION_SHAPE_POINTS** = **3**
+See also :ref:`Particles2D<class_Particles2D>`, which provides the same functionality with hardware acceleration, but may not run on older devices.
 
 
-- **EMISSION_SHAPE_DIRECTED_POINTS** = **4**
+Tutorials
+---------
+
+- :doc:`../tutorials/2d/particle_systems_2d`
 
 
 Property Descriptions
 Property Descriptions
 ---------------------
 ---------------------
@@ -266,6 +292,8 @@ Property Descriptions
 | *Getter* | get_amount()      |
 | *Getter* | get_amount()      |
 +----------+-------------------+
 +----------+-------------------+
 
 
+Number of particles emitted in one emission cycle.
+
 .. _class_CPUParticles2D_property_angle:
 .. _class_CPUParticles2D_property_angle:
 
 
 - :ref:`float<class_float>` **angle**
 - :ref:`float<class_float>` **angle**
@@ -276,6 +304,8 @@ Property Descriptions
 | *Getter* | get_param()      |
 | *Getter* | get_param()      |
 +----------+------------------+
 +----------+------------------+
 
 
+Initial rotation applied to each particle, in degrees.
+
 .. _class_CPUParticles2D_property_angle_curve:
 .. _class_CPUParticles2D_property_angle_curve:
 
 
 - :ref:`Curve<class_Curve>` **angle_curve**
 - :ref:`Curve<class_Curve>` **angle_curve**
@@ -286,6 +316,8 @@ Property Descriptions
 | *Getter* | get_param_curve()      |
 | *Getter* | get_param_curve()      |
 +----------+------------------------+
 +----------+------------------------+
 
 
+Each particle's rotation will be animated along this :ref:`Curve<class_Curve>`.
+
 .. _class_CPUParticles2D_property_angle_random:
 .. _class_CPUParticles2D_property_angle_random:
 
 
 - :ref:`float<class_float>` **angle_random**
 - :ref:`float<class_float>` **angle_random**
@@ -296,6 +328,8 @@ Property Descriptions
 | *Getter* | get_param_randomness()      |
 | *Getter* | get_param_randomness()      |
 +----------+-----------------------------+
 +----------+-----------------------------+
 
 
+Rotation randomness ratio. Default value: ``0``.
+
 .. _class_CPUParticles2D_property_angular_velocity:
 .. _class_CPUParticles2D_property_angular_velocity:
 
 
 - :ref:`float<class_float>` **angular_velocity**
 - :ref:`float<class_float>` **angular_velocity**
@@ -306,6 +340,8 @@ Property Descriptions
 | *Getter* | get_param()      |
 | *Getter* | get_param()      |
 +----------+------------------+
 +----------+------------------+
 
 
+Initial angular velocity applied to each particle. Sets the speed of rotation of the particle.
+
 .. _class_CPUParticles2D_property_angular_velocity_curve:
 .. _class_CPUParticles2D_property_angular_velocity_curve:
 
 
 - :ref:`Curve<class_Curve>` **angular_velocity_curve**
 - :ref:`Curve<class_Curve>` **angular_velocity_curve**
@@ -316,6 +352,8 @@ Property Descriptions
 | *Getter* | get_param_curve()      |
 | *Getter* | get_param_curve()      |
 +----------+------------------------+
 +----------+------------------------+
 
 
+Each particle's angular velocity will vary along this :ref:`Curve<class_Curve>`.
+
 .. _class_CPUParticles2D_property_angular_velocity_random:
 .. _class_CPUParticles2D_property_angular_velocity_random:
 
 
 - :ref:`float<class_float>` **angular_velocity_random**
 - :ref:`float<class_float>` **angular_velocity_random**
@@ -326,6 +364,8 @@ Property Descriptions
 | *Getter* | get_param_randomness()      |
 | *Getter* | get_param_randomness()      |
 +----------+-----------------------------+
 +----------+-----------------------------+
 
 
+Angular velocity randomness ratio. Default value: ``0``.
+
 .. _class_CPUParticles2D_property_anim_offset:
 .. _class_CPUParticles2D_property_anim_offset:
 
 
 - :ref:`float<class_float>` **anim_offset**
 - :ref:`float<class_float>` **anim_offset**
@@ -336,6 +376,8 @@ Property Descriptions
 | *Getter* | get_param()      |
 | *Getter* | get_param()      |
 +----------+------------------+
 +----------+------------------+
 
 
+Particle animation offset.
+
 .. _class_CPUParticles2D_property_anim_offset_curve:
 .. _class_CPUParticles2D_property_anim_offset_curve:
 
 
 - :ref:`Curve<class_Curve>` **anim_offset_curve**
 - :ref:`Curve<class_Curve>` **anim_offset_curve**
@@ -346,6 +388,8 @@ Property Descriptions
 | *Getter* | get_param_curve()      |
 | *Getter* | get_param_curve()      |
 +----------+------------------------+
 +----------+------------------------+
 
 
+Each particle's animation offset will vary along this :ref:`Curve<class_Curve>`.
+
 .. _class_CPUParticles2D_property_anim_offset_random:
 .. _class_CPUParticles2D_property_anim_offset_random:
 
 
 - :ref:`float<class_float>` **anim_offset_random**
 - :ref:`float<class_float>` **anim_offset_random**
@@ -356,6 +400,8 @@ Property Descriptions
 | *Getter* | get_param_randomness()      |
 | *Getter* | get_param_randomness()      |
 +----------+-----------------------------+
 +----------+-----------------------------+
 
 
+Animation offset randomness ratio. Default value: ``0``.
+
 .. _class_CPUParticles2D_property_anim_speed:
 .. _class_CPUParticles2D_property_anim_speed:
 
 
 - :ref:`float<class_float>` **anim_speed**
 - :ref:`float<class_float>` **anim_speed**
@@ -366,6 +412,8 @@ Property Descriptions
 | *Getter* | get_param()      |
 | *Getter* | get_param()      |
 +----------+------------------+
 +----------+------------------+
 
 
+Particle animation speed.
+
 .. _class_CPUParticles2D_property_anim_speed_curve:
 .. _class_CPUParticles2D_property_anim_speed_curve:
 
 
 - :ref:`Curve<class_Curve>` **anim_speed_curve**
 - :ref:`Curve<class_Curve>` **anim_speed_curve**
@@ -376,6 +424,8 @@ Property Descriptions
 | *Getter* | get_param_curve()      |
 | *Getter* | get_param_curve()      |
 +----------+------------------------+
 +----------+------------------------+
 
 
+Each particle's animation speed will vary along this :ref:`Curve<class_Curve>`.
+
 .. _class_CPUParticles2D_property_anim_speed_random:
 .. _class_CPUParticles2D_property_anim_speed_random:
 
 
 - :ref:`float<class_float>` **anim_speed_random**
 - :ref:`float<class_float>` **anim_speed_random**
@@ -386,6 +436,8 @@ Property Descriptions
 | *Getter* | get_param_randomness()      |
 | *Getter* | get_param_randomness()      |
 +----------+-----------------------------+
 +----------+-----------------------------+
 
 
+Animation speed randomness ratio. Default value: ``0``.
+
 .. _class_CPUParticles2D_property_color:
 .. _class_CPUParticles2D_property_color:
 
 
 - :ref:`Color<class_Color>` **color**
 - :ref:`Color<class_Color>` **color**
@@ -396,6 +448,8 @@ Property Descriptions
 | *Getter* | get_color()      |
 | *Getter* | get_color()      |
 +----------+------------------+
 +----------+------------------+
 
 
+Each particle's initial color. If :ref:`texture<class_CPUParticles2D_property_texture>` is defined, it will be multiplied by this color.
+
 .. _class_CPUParticles2D_property_color_ramp:
 .. _class_CPUParticles2D_property_color_ramp:
 
 
 - :ref:`Gradient<class_Gradient>` **color_ramp**
 - :ref:`Gradient<class_Gradient>` **color_ramp**
@@ -406,6 +460,8 @@ Property Descriptions
 | *Getter* | get_color_ramp()      |
 | *Getter* | get_color_ramp()      |
 +----------+-----------------------+
 +----------+-----------------------+
 
 
+Each particle's color will vary along this :ref:`Gradient<class_Gradient>`.
+
 .. _class_CPUParticles2D_property_damping:
 .. _class_CPUParticles2D_property_damping:
 
 
 - :ref:`float<class_float>` **damping**
 - :ref:`float<class_float>` **damping**
@@ -416,6 +472,8 @@ Property Descriptions
 | *Getter* | get_param()      |
 | *Getter* | get_param()      |
 +----------+------------------+
 +----------+------------------+
 
 
+The rate at which particles lose velocity.
+
 .. _class_CPUParticles2D_property_damping_curve:
 .. _class_CPUParticles2D_property_damping_curve:
 
 
 - :ref:`Curve<class_Curve>` **damping_curve**
 - :ref:`Curve<class_Curve>` **damping_curve**
@@ -426,6 +484,8 @@ Property Descriptions
 | *Getter* | get_param_curve()      |
 | *Getter* | get_param_curve()      |
 +----------+------------------------+
 +----------+------------------------+
 
 
+Damping will vary along this :ref:`Curve<class_Curve>`.
+
 .. _class_CPUParticles2D_property_damping_random:
 .. _class_CPUParticles2D_property_damping_random:
 
 
 - :ref:`float<class_float>` **damping_random**
 - :ref:`float<class_float>` **damping_random**
@@ -436,6 +496,8 @@ Property Descriptions
 | *Getter* | get_param_randomness()      |
 | *Getter* | get_param_randomness()      |
 +----------+-----------------------------+
 +----------+-----------------------------+
 
 
+Damping randomness ratio. Default value: ``0``.
+
 .. _class_CPUParticles2D_property_draw_order:
 .. _class_CPUParticles2D_property_draw_order:
 
 
 - :ref:`DrawOrder<enum_CPUParticles2D_DrawOrder>` **draw_order**
 - :ref:`DrawOrder<enum_CPUParticles2D_DrawOrder>` **draw_order**
@@ -446,6 +508,8 @@ Property Descriptions
 | *Getter* | get_draw_order()      |
 | *Getter* | get_draw_order()      |
 +----------+-----------------------+
 +----------+-----------------------+
 
 
+Particle draw order. Uses :ref:`DrawOrder<enum_CPUParticles2D_DrawOrder>` values. Default value: :ref:`DRAW_ORDER_INDEX<class_CPUParticles2D_constant_DRAW_ORDER_INDEX>`.
+
 .. _class_CPUParticles2D_property_emission_colors:
 .. _class_CPUParticles2D_property_emission_colors:
 
 
 - :ref:`PoolColorArray<class_PoolColorArray>` **emission_colors**
 - :ref:`PoolColorArray<class_PoolColorArray>` **emission_colors**
@@ -486,6 +550,8 @@ Property Descriptions
 | *Getter* | get_emission_rect_extents()      |
 | *Getter* | get_emission_rect_extents()      |
 +----------+----------------------------------+
 +----------+----------------------------------+
 
 
+The rectangle's extents if :ref:`emission_shape<class_CPUParticles2D_property_emission_shape>` is set to :ref:`EMISSION_SHAPE_RECTANGLE<class_CPUParticles2D_constant_EMISSION_SHAPE_RECTANGLE>`.
+
 .. _class_CPUParticles2D_property_emission_shape:
 .. _class_CPUParticles2D_property_emission_shape:
 
 
 - :ref:`EmissionShape<enum_CPUParticles2D_EmissionShape>` **emission_shape**
 - :ref:`EmissionShape<enum_CPUParticles2D_EmissionShape>` **emission_shape**
@@ -496,6 +562,8 @@ Property Descriptions
 | *Getter* | get_emission_shape()      |
 | *Getter* | get_emission_shape()      |
 +----------+---------------------------+
 +----------+---------------------------+
 
 
+Particles will be emitted inside this region. Use :ref:`EmissionShape<enum_CPUParticles2D_EmissionShape>` for values. Default value: :ref:`EMISSION_SHAPE_POINT<class_CPUParticles2D_constant_EMISSION_SHAPE_POINT>`.
+
 .. _class_CPUParticles2D_property_emission_sphere_radius:
 .. _class_CPUParticles2D_property_emission_sphere_radius:
 
 
 - :ref:`float<class_float>` **emission_sphere_radius**
 - :ref:`float<class_float>` **emission_sphere_radius**
@@ -506,6 +574,8 @@ Property Descriptions
 | *Getter* | get_emission_sphere_radius()      |
 | *Getter* | get_emission_sphere_radius()      |
 +----------+-----------------------------------+
 +----------+-----------------------------------+
 
 
+The circle's radius if :ref:`emission_shape<class_CPUParticles2D_property_emission_shape>` is set to :ref:`EMISSION_SHAPE_CIRCLE<class_CPUParticles2D_constant_EMISSION_SHAPE_CIRCLE>`.
+
 .. _class_CPUParticles2D_property_emitting:
 .. _class_CPUParticles2D_property_emitting:
 
 
 - :ref:`bool<class_bool>` **emitting**
 - :ref:`bool<class_bool>` **emitting**
@@ -516,6 +586,8 @@ Property Descriptions
 | *Getter* | is_emitting()       |
 | *Getter* | is_emitting()       |
 +----------+---------------------+
 +----------+---------------------+
 
 
+If ``true``, particles are being emitted. Default value: ``true``.
+
 .. _class_CPUParticles2D_property_explosiveness:
 .. _class_CPUParticles2D_property_explosiveness:
 
 
 - :ref:`float<class_float>` **explosiveness**
 - :ref:`float<class_float>` **explosiveness**
@@ -526,6 +598,8 @@ Property Descriptions
 | *Getter* | get_explosiveness_ratio()      |
 | *Getter* | get_explosiveness_ratio()      |
 +----------+--------------------------------+
 +----------+--------------------------------+
 
 
+How rapidly particles in an emission cycle are emitted. If greater than ``0``, there will be a gap in emissions before the next cycle begins. Default value: ``0``.
+
 .. _class_CPUParticles2D_property_fixed_fps:
 .. _class_CPUParticles2D_property_fixed_fps:
 
 
 - :ref:`int<class_int>` **fixed_fps**
 - :ref:`int<class_int>` **fixed_fps**
@@ -536,6 +610,8 @@ Property Descriptions
 | *Getter* | get_fixed_fps()      |
 | *Getter* | get_fixed_fps()      |
 +----------+----------------------+
 +----------+----------------------+
 
 
+The particle system's frame rate is fixed to a value. For instance, changing the value to 2 will make the particles render at 2 frames per second. Note this does not slow down the simulation of the particle system itself.
+
 .. _class_CPUParticles2D_property_flag_align_y:
 .. _class_CPUParticles2D_property_flag_align_y:
 
 
 - :ref:`bool<class_bool>` **flag_align_y**
 - :ref:`bool<class_bool>` **flag_align_y**
@@ -546,6 +622,8 @@ Property Descriptions
 | *Getter* | get_particle_flag()      |
 | *Getter* | get_particle_flag()      |
 +----------+--------------------------+
 +----------+--------------------------+
 
 
+Align y-axis of particle with the direction of its velocity.
+
 .. _class_CPUParticles2D_property_flatness:
 .. _class_CPUParticles2D_property_flatness:
 
 
 - :ref:`float<class_float>` **flatness**
 - :ref:`float<class_float>` **flatness**
@@ -566,6 +644,8 @@ Property Descriptions
 | *Getter* | get_fractional_delta()      |
 | *Getter* | get_fractional_delta()      |
 +----------+-----------------------------+
 +----------+-----------------------------+
 
 
+If ``true``, results in fractional delta calculation which has a smoother particles display effect. Default value: ``true``
+
 .. _class_CPUParticles2D_property_gravity:
 .. _class_CPUParticles2D_property_gravity:
 
 
 - :ref:`Vector2<class_Vector2>` **gravity**
 - :ref:`Vector2<class_Vector2>` **gravity**
@@ -576,6 +656,8 @@ Property Descriptions
 | *Getter* | get_gravity()      |
 | *Getter* | get_gravity()      |
 +----------+--------------------+
 +----------+--------------------+
 
 
+Gravity applied to every particle. Default value: ``(0, 98)``.
+
 .. _class_CPUParticles2D_property_hue_variation:
 .. _class_CPUParticles2D_property_hue_variation:
 
 
 - :ref:`float<class_float>` **hue_variation**
 - :ref:`float<class_float>` **hue_variation**
@@ -586,6 +668,8 @@ Property Descriptions
 | *Getter* | get_param()      |
 | *Getter* | get_param()      |
 +----------+------------------+
 +----------+------------------+
 
 
+Initial hue variation applied to each particle.
+
 .. _class_CPUParticles2D_property_hue_variation_curve:
 .. _class_CPUParticles2D_property_hue_variation_curve:
 
 
 - :ref:`Curve<class_Curve>` **hue_variation_curve**
 - :ref:`Curve<class_Curve>` **hue_variation_curve**
@@ -596,6 +680,8 @@ Property Descriptions
 | *Getter* | get_param_curve()      |
 | *Getter* | get_param_curve()      |
 +----------+------------------------+
 +----------+------------------------+
 
 
+Each particle's hue will vary along this :ref:`Curve<class_Curve>`.
+
 .. _class_CPUParticles2D_property_hue_variation_random:
 .. _class_CPUParticles2D_property_hue_variation_random:
 
 
 - :ref:`float<class_float>` **hue_variation_random**
 - :ref:`float<class_float>` **hue_variation_random**
@@ -606,6 +692,8 @@ Property Descriptions
 | *Getter* | get_param_randomness()      |
 | *Getter* | get_param_randomness()      |
 +----------+-----------------------------+
 +----------+-----------------------------+
 
 
+Hue variation randomness ratio. Default value: ``0``.
+
 .. _class_CPUParticles2D_property_initial_velocity:
 .. _class_CPUParticles2D_property_initial_velocity:
 
 
 - :ref:`float<class_float>` **initial_velocity**
 - :ref:`float<class_float>` **initial_velocity**
@@ -616,6 +704,8 @@ Property Descriptions
 | *Getter* | get_param()      |
 | *Getter* | get_param()      |
 +----------+------------------+
 +----------+------------------+
 
 
+Initial velocity magnitude for each particle. Direction comes from :ref:`spread<class_CPUParticles2D_property_spread>` and the node's orientation.
+
 .. _class_CPUParticles2D_property_initial_velocity_random:
 .. _class_CPUParticles2D_property_initial_velocity_random:
 
 
 - :ref:`float<class_float>` **initial_velocity_random**
 - :ref:`float<class_float>` **initial_velocity_random**
@@ -626,6 +716,8 @@ Property Descriptions
 | *Getter* | get_param_randomness()      |
 | *Getter* | get_param_randomness()      |
 +----------+-----------------------------+
 +----------+-----------------------------+
 
 
+Initial velocity randomness ratio. Default value: ``0``.
+
 .. _class_CPUParticles2D_property_lifetime:
 .. _class_CPUParticles2D_property_lifetime:
 
 
 - :ref:`float<class_float>` **lifetime**
 - :ref:`float<class_float>` **lifetime**
@@ -636,6 +728,8 @@ Property Descriptions
 | *Getter* | get_lifetime()      |
 | *Getter* | get_lifetime()      |
 +----------+---------------------+
 +----------+---------------------+
 
 
+Amount of time each particle will exist. Default value: ``1``.
+
 .. _class_CPUParticles2D_property_linear_accel:
 .. _class_CPUParticles2D_property_linear_accel:
 
 
 - :ref:`float<class_float>` **linear_accel**
 - :ref:`float<class_float>` **linear_accel**
@@ -646,6 +740,8 @@ Property Descriptions
 | *Getter* | get_param()      |
 | *Getter* | get_param()      |
 +----------+------------------+
 +----------+------------------+
 
 
+Linear acceleration applied to each particle in the direction of motion.
+
 .. _class_CPUParticles2D_property_linear_accel_curve:
 .. _class_CPUParticles2D_property_linear_accel_curve:
 
 
 - :ref:`Curve<class_Curve>` **linear_accel_curve**
 - :ref:`Curve<class_Curve>` **linear_accel_curve**
@@ -656,6 +752,8 @@ Property Descriptions
 | *Getter* | get_param_curve()      |
 | *Getter* | get_param_curve()      |
 +----------+------------------------+
 +----------+------------------------+
 
 
+Each particle's linear acceleration will vary along this :ref:`Curve<class_Curve>`.
+
 .. _class_CPUParticles2D_property_linear_accel_random:
 .. _class_CPUParticles2D_property_linear_accel_random:
 
 
 - :ref:`float<class_float>` **linear_accel_random**
 - :ref:`float<class_float>` **linear_accel_random**
@@ -666,6 +764,8 @@ Property Descriptions
 | *Getter* | get_param_randomness()      |
 | *Getter* | get_param_randomness()      |
 +----------+-----------------------------+
 +----------+-----------------------------+
 
 
+Linear acceleration randomness ratio. Default value: ``0``.
+
 .. _class_CPUParticles2D_property_local_coords:
 .. _class_CPUParticles2D_property_local_coords:
 
 
 - :ref:`bool<class_bool>` **local_coords**
 - :ref:`bool<class_bool>` **local_coords**
@@ -676,6 +776,8 @@ Property Descriptions
 | *Getter* | get_use_local_coordinates()      |
 | *Getter* | get_use_local_coordinates()      |
 +----------+----------------------------------+
 +----------+----------------------------------+
 
 
+If ``true``, particles use the parent node's coordinate space. If ``false``, they use global coordinates. Default value: ``true``.
+
 .. _class_CPUParticles2D_property_normalmap:
 .. _class_CPUParticles2D_property_normalmap:
 
 
 - :ref:`Texture<class_Texture>` **normalmap**
 - :ref:`Texture<class_Texture>` **normalmap**
@@ -686,6 +788,8 @@ Property Descriptions
 | *Getter* | get_normalmap()      |
 | *Getter* | get_normalmap()      |
 +----------+----------------------+
 +----------+----------------------+
 
 
+Normal map to be used for the :ref:`texture<class_CPUParticles2D_property_texture>` property.
+
 .. _class_CPUParticles2D_property_one_shot:
 .. _class_CPUParticles2D_property_one_shot:
 
 
 - :ref:`bool<class_bool>` **one_shot**
 - :ref:`bool<class_bool>` **one_shot**
@@ -696,6 +800,44 @@ Property Descriptions
 | *Getter* | get_one_shot()      |
 | *Getter* | get_one_shot()      |
 +----------+---------------------+
 +----------+---------------------+
 
 
+If ``true``, only one emission cycle occurs. If set ``true`` during a cycle, emission will stop at the cycle's end. Default value: ``false``.
+
+.. _class_CPUParticles2D_property_orbit_velocity:
+
+- :ref:`float<class_float>` **orbit_velocity**
+
++----------+------------------+
+| *Setter* | set_param(value) |
++----------+------------------+
+| *Getter* | get_param()      |
++----------+------------------+
+
+Orbital velocity applied to each particle. Makes the particles circle around origin. Specified in number of full rotations around origin per second.
+
+.. _class_CPUParticles2D_property_orbit_velocity_curve:
+
+- :ref:`Curve<class_Curve>` **orbit_velocity_curve**
+
++----------+------------------------+
+| *Setter* | set_param_curve(value) |
++----------+------------------------+
+| *Getter* | get_param_curve()      |
++----------+------------------------+
+
+Each particle's orbital velocity will vary along this :ref:`Curve<class_Curve>`.
+
+.. _class_CPUParticles2D_property_orbit_velocity_random:
+
+- :ref:`float<class_float>` **orbit_velocity_random**
+
++----------+-----------------------------+
+| *Setter* | set_param_randomness(value) |
++----------+-----------------------------+
+| *Getter* | get_param_randomness()      |
++----------+-----------------------------+
+
+Orbital velocity randomness ratio. Default value: ``0``.
+
 .. _class_CPUParticles2D_property_preprocess:
 .. _class_CPUParticles2D_property_preprocess:
 
 
 - :ref:`float<class_float>` **preprocess**
 - :ref:`float<class_float>` **preprocess**
@@ -706,6 +848,8 @@ Property Descriptions
 | *Getter* | get_pre_process_time()      |
 | *Getter* | get_pre_process_time()      |
 +----------+-----------------------------+
 +----------+-----------------------------+
 
 
+Particle system starts as if it had already run for this many seconds.
+
 .. _class_CPUParticles2D_property_radial_accel:
 .. _class_CPUParticles2D_property_radial_accel:
 
 
 - :ref:`float<class_float>` **radial_accel**
 - :ref:`float<class_float>` **radial_accel**
@@ -716,6 +860,8 @@ Property Descriptions
 | *Getter* | get_param()      |
 | *Getter* | get_param()      |
 +----------+------------------+
 +----------+------------------+
 
 
+Radial acceleration applied to each particle. Makes particle accelerate away from origin.
+
 .. _class_CPUParticles2D_property_radial_accel_curve:
 .. _class_CPUParticles2D_property_radial_accel_curve:
 
 
 - :ref:`Curve<class_Curve>` **radial_accel_curve**
 - :ref:`Curve<class_Curve>` **radial_accel_curve**
@@ -726,6 +872,8 @@ Property Descriptions
 | *Getter* | get_param_curve()      |
 | *Getter* | get_param_curve()      |
 +----------+------------------------+
 +----------+------------------------+
 
 
+Each particle's radial acceleration will vary along this :ref:`Curve<class_Curve>`.
+
 .. _class_CPUParticles2D_property_radial_accel_random:
 .. _class_CPUParticles2D_property_radial_accel_random:
 
 
 - :ref:`float<class_float>` **radial_accel_random**
 - :ref:`float<class_float>` **radial_accel_random**
@@ -736,6 +884,8 @@ Property Descriptions
 | *Getter* | get_param_randomness()      |
 | *Getter* | get_param_randomness()      |
 +----------+-----------------------------+
 +----------+-----------------------------+
 
 
+Radial acceleration randomness ratio. Default value: ``0``.
+
 .. _class_CPUParticles2D_property_randomness:
 .. _class_CPUParticles2D_property_randomness:
 
 
 - :ref:`float<class_float>` **randomness**
 - :ref:`float<class_float>` **randomness**
@@ -746,6 +896,8 @@ Property Descriptions
 | *Getter* | get_randomness_ratio()      |
 | *Getter* | get_randomness_ratio()      |
 +----------+-----------------------------+
 +----------+-----------------------------+
 
 
+Emission lifetime randomness ratio. Default value: ``0``.
+
 .. _class_CPUParticles2D_property_scale_amount:
 .. _class_CPUParticles2D_property_scale_amount:
 
 
 - :ref:`float<class_float>` **scale_amount**
 - :ref:`float<class_float>` **scale_amount**
@@ -756,6 +908,8 @@ Property Descriptions
 | *Getter* | get_param()      |
 | *Getter* | get_param()      |
 +----------+------------------+
 +----------+------------------+
 
 
+Initial scale applied to each particle.
+
 .. _class_CPUParticles2D_property_scale_amount_curve:
 .. _class_CPUParticles2D_property_scale_amount_curve:
 
 
 - :ref:`Curve<class_Curve>` **scale_amount_curve**
 - :ref:`Curve<class_Curve>` **scale_amount_curve**
@@ -766,6 +920,8 @@ Property Descriptions
 | *Getter* | get_param_curve()      |
 | *Getter* | get_param_curve()      |
 +----------+------------------------+
 +----------+------------------------+
 
 
+Each particle's scale will vary along this :ref:`Curve<class_Curve>`.
+
 .. _class_CPUParticles2D_property_scale_amount_random:
 .. _class_CPUParticles2D_property_scale_amount_random:
 
 
 - :ref:`float<class_float>` **scale_amount_random**
 - :ref:`float<class_float>` **scale_amount_random**
@@ -776,6 +932,8 @@ Property Descriptions
 | *Getter* | get_param_randomness()      |
 | *Getter* | get_param_randomness()      |
 +----------+-----------------------------+
 +----------+-----------------------------+
 
 
+Scale randomness ratio. Default value: ``0``.
+
 .. _class_CPUParticles2D_property_speed_scale:
 .. _class_CPUParticles2D_property_speed_scale:
 
 
 - :ref:`float<class_float>` **speed_scale**
 - :ref:`float<class_float>` **speed_scale**
@@ -786,6 +944,8 @@ Property Descriptions
 | *Getter* | get_speed_scale()      |
 | *Getter* | get_speed_scale()      |
 +----------+------------------------+
 +----------+------------------------+
 
 
+Particle system's running speed scaling ratio. Default value: ``1``. A value of ``0`` can be used to pause the particles.
+
 .. _class_CPUParticles2D_property_spread:
 .. _class_CPUParticles2D_property_spread:
 
 
 - :ref:`float<class_float>` **spread**
 - :ref:`float<class_float>` **spread**
@@ -796,6 +956,8 @@ Property Descriptions
 | *Getter* | get_spread()      |
 | *Getter* | get_spread()      |
 +----------+-------------------+
 +----------+-------------------+
 
 
+Each particle's initial direction range from ``+spread`` to ``-spread`` degrees. Default value: ``45``.
+
 .. _class_CPUParticles2D_property_tangential_accel:
 .. _class_CPUParticles2D_property_tangential_accel:
 
 
 - :ref:`float<class_float>` **tangential_accel**
 - :ref:`float<class_float>` **tangential_accel**
@@ -806,6 +968,8 @@ Property Descriptions
 | *Getter* | get_param()      |
 | *Getter* | get_param()      |
 +----------+------------------+
 +----------+------------------+
 
 
+Tangential acceleration applied to each particle. Tangential acceleration is perpendicular to the particle's velocity giving the particles a swirling motion.
+
 .. _class_CPUParticles2D_property_tangential_accel_curve:
 .. _class_CPUParticles2D_property_tangential_accel_curve:
 
 
 - :ref:`Curve<class_Curve>` **tangential_accel_curve**
 - :ref:`Curve<class_Curve>` **tangential_accel_curve**
@@ -816,6 +980,8 @@ Property Descriptions
 | *Getter* | get_param_curve()      |
 | *Getter* | get_param_curve()      |
 +----------+------------------------+
 +----------+------------------------+
 
 
+Each particle's tangential acceleration will vary along this :ref:`Curve<class_Curve>`.
+
 .. _class_CPUParticles2D_property_tangential_accel_random:
 .. _class_CPUParticles2D_property_tangential_accel_random:
 
 
 - :ref:`float<class_float>` **tangential_accel_random**
 - :ref:`float<class_float>` **tangential_accel_random**
@@ -826,6 +992,8 @@ Property Descriptions
 | *Getter* | get_param_randomness()      |
 | *Getter* | get_param_randomness()      |
 +----------+-----------------------------+
 +----------+-----------------------------+
 
 
+Tangential acceleration randomness ratio. Default value: ``0``.
+
 .. _class_CPUParticles2D_property_texture:
 .. _class_CPUParticles2D_property_texture:
 
 
 - :ref:`Texture<class_Texture>` **texture**
 - :ref:`Texture<class_Texture>` **texture**
@@ -836,6 +1004,8 @@ Property Descriptions
 | *Getter* | get_texture()      |
 | *Getter* | get_texture()      |
 +----------+--------------------+
 +----------+--------------------+
 
 
+Particle texture. If ``null`` particles will be squares.
+
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
 
 
@@ -843,7 +1013,11 @@ Method Descriptions
 
 
 - void **convert_from_particles** **(** :ref:`Node<class_Node>` particles **)**
 - void **convert_from_particles** **(** :ref:`Node<class_Node>` particles **)**
 
 
+Sets this node's properties to match a given :ref:`Particles2D<class_Particles2D>` node with an assigned :ref:`ParticlesMaterial<class_ParticlesMaterial>`.
+
 .. _class_CPUParticles2D_method_restart:
 .. _class_CPUParticles2D_method_restart:
 
 
 - void **restart** **(** **)**
 - void **restart** **(** **)**
 
 
+Restarts the particle emitter.
+

+ 2 - 0
classes/class_filedialog.rst

@@ -66,6 +66,8 @@ Theme Properties
 +-------------------------------+----------------+
 +-------------------------------+----------------+
 | :ref:`Texture<class_Texture>` | reload         |
 | :ref:`Texture<class_Texture>` | reload         |
 +-------------------------------+----------------+
 +-------------------------------+----------------+
+| :ref:`Texture<class_Texture>` | toggle_hidden  |
++-------------------------------+----------------+
 
 
 Signals
 Signals
 -------
 -------

+ 1 - 1
classes/class_image.rst

@@ -629,7 +629,7 @@ Loads an image from the binary contents of a WebP file.
 
 
 - void **lock** **(** **)**
 - void **lock** **(** **)**
 
 
-Locks the data for writing access.
+Locks the data for reading and writing access. Sends an error to the console if the image is not locked when reading or writing a pixel.
 
 
 .. _class_Image_method_normalmap_to_xy:
 .. _class_Image_method_normalmap_to_xy:
 
 

+ 2 - 0
classes/class_meshinstance.rst

@@ -107,6 +107,8 @@ Returns the :ref:`Material<class_Material>` for a surface of the :ref:`Mesh<clas
 
 
 - :ref:`int<class_int>` **get_surface_material_count** **(** **)** const
 - :ref:`int<class_int>` **get_surface_material_count** **(** **)** const
 
 
+Returns the number of surface materials.
+
 .. _class_MeshInstance_method_set_surface_material:
 .. _class_MeshInstance_method_set_surface_material:
 
 
 - void **set_surface_material** **(** :ref:`int<class_int>` surface, :ref:`Material<class_Material>` material **)**
 - void **set_surface_material** **(** :ref:`int<class_int>` surface, :ref:`Material<class_Material>` material **)**

+ 19 - 1
classes/class_meshinstance2d.rst

@@ -14,7 +14,7 @@ MeshInstance2D
 Brief Description
 Brief Description
 -----------------
 -----------------
 
 
-
+Node used for displaying a :ref:`Mesh<class_Mesh>` in 2D.
 
 
 Properties
 Properties
 ----------
 ----------
@@ -27,6 +27,18 @@ Properties
 | :ref:`Texture<class_Texture>` | :ref:`texture<class_MeshInstance2D_property_texture>`       |
 | :ref:`Texture<class_Texture>` | :ref:`texture<class_MeshInstance2D_property_texture>`       |
 +-------------------------------+-------------------------------------------------------------+
 +-------------------------------+-------------------------------------------------------------+
 
 
+Signals
+-------
+
+.. _class_MeshInstance2D_signal_texture_changed:
+
+- **texture_changed** **(** **)**
+
+Description
+-----------
+
+Node used for displaying a :ref:`Mesh<class_Mesh>` in 2D. Can be constructed from an existing :ref:`Sprite<class_Sprite>` use tool in Toolbar. Select "Sprite" then "Convert to Mesh2D", select settings in popup and press "Create Mesh2D".
+
 Tutorials
 Tutorials
 ---------
 ---------
 
 
@@ -45,6 +57,8 @@ Property Descriptions
 | *Getter* | get_mesh()      |
 | *Getter* | get_mesh()      |
 +----------+-----------------+
 +----------+-----------------+
 
 
+The :ref:`Mesh<class_Mesh>` that will be drawn by the ``MeshInstance2D``.
+
 .. _class_MeshInstance2D_property_normal_map:
 .. _class_MeshInstance2D_property_normal_map:
 
 
 - :ref:`Texture<class_Texture>` **normal_map**
 - :ref:`Texture<class_Texture>` **normal_map**
@@ -55,6 +69,8 @@ Property Descriptions
 | *Getter* | get_normal_map()      |
 | *Getter* | get_normal_map()      |
 +----------+-----------------------+
 +----------+-----------------------+
 
 
+The normal map that will be used if using the default :ref:`CanvasItemMaterial<class_CanvasItemMaterial>`.
+
 .. _class_MeshInstance2D_property_texture:
 .. _class_MeshInstance2D_property_texture:
 
 
 - :ref:`Texture<class_Texture>` **texture**
 - :ref:`Texture<class_Texture>` **texture**
@@ -65,3 +81,5 @@ Property Descriptions
 | *Getter* | get_texture()      |
 | *Getter* | get_texture()      |
 +----------+--------------------+
 +----------+--------------------+
 
 
+The :ref:`Texture<class_Texture>` that will be used if using the default :ref:`CanvasItemMaterial<class_CanvasItemMaterial>`. Can be accessed as ``TEXTURE`` in CanvasItem shader.
+

+ 7 - 0
classes/class_multimeshinstance2d.rst

@@ -27,6 +27,13 @@ Properties
 | :ref:`Texture<class_Texture>`     | :ref:`texture<class_MultiMeshInstance2D_property_texture>`       |
 | :ref:`Texture<class_Texture>`     | :ref:`texture<class_MultiMeshInstance2D_property_texture>`       |
 +-----------------------------------+------------------------------------------------------------------+
 +-----------------------------------+------------------------------------------------------------------+
 
 
+Signals
+-------
+
+.. _class_MultiMeshInstance2D_signal_texture_changed:
+
+- **texture_changed** **(** **)**
+
 Description
 Description
 -----------
 -----------
 
 

+ 1 - 1
classes/class_navigation.rst

@@ -95,7 +95,7 @@ Returns the navigation point closest to the given line segment. When enabling ``
 
 
 - :ref:`PoolVector3Array<class_PoolVector3Array>` **get_simple_path** **(** :ref:`Vector3<class_Vector3>` start, :ref:`Vector3<class_Vector3>` end, :ref:`bool<class_bool>` optimize=true **)**
 - :ref:`PoolVector3Array<class_PoolVector3Array>` **get_simple_path** **(** :ref:`Vector3<class_Vector3>` start, :ref:`Vector3<class_Vector3>` end, :ref:`bool<class_bool>` optimize=true **)**
 
 
-Returns the path between two given points. Points are in local coordinate space. If ``optimize`` is ``true`` (the default), the agent properties associated with each :ref:`NavigationMesh<class_NavigationMesh>` (raidus, height, etc.) are considered in the path calculation, otherwise they are ignored.
+Returns the path between two given points. Points are in local coordinate space. If ``optimize`` is ``true`` (the default), the agent properties associated with each :ref:`NavigationMesh<class_NavigationMesh>` (radius, height, etc.) are considered in the path calculation, otherwise they are ignored.
 
 
 .. _class_Navigation_method_navmesh_add:
 .. _class_Navigation_method_navmesh_add:
 
 

+ 1 - 1
classes/class_networkedmultiplayerpeer.rst

@@ -9,7 +9,7 @@ NetworkedMultiplayerPeer
 
 
 **Inherits:** :ref:`PacketPeer<class_PacketPeer>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
 **Inherits:** :ref:`PacketPeer<class_PacketPeer>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
 
 
-**Inherited By:** :ref:`MultiplayerPeerGDNative<class_MultiplayerPeerGDNative>`, :ref:`NetworkedMultiplayerENet<class_NetworkedMultiplayerENet>`, :ref:`WebSocketMultiplayerPeer<class_WebSocketMultiplayerPeer>`
+**Inherited By:** :ref:`MultiplayerPeerGDNative<class_MultiplayerPeerGDNative>`, :ref:`NetworkedMultiplayerENet<class_NetworkedMultiplayerENet>`, :ref:`WebRTCMultiplayer<class_WebRTCMultiplayer>`, :ref:`WebSocketMultiplayerPeer<class_WebSocketMultiplayerPeer>`
 
 
 **Category:** Core
 **Category:** Core
 
 

+ 11 - 1
classes/class_os.rst

@@ -535,6 +535,8 @@ If ``true``, vertical synchronization (Vsync) is enabled.
 
 
 If ``true``, removes the window frame.
 If ``true``, removes the window frame.
 
 
+Note: Setting ``window_borderless`` to ``false`` disables per-pixel transparency.
+
 .. _class_OS_property_window_fullscreen:
 .. _class_OS_property_window_fullscreen:
 
 
 - :ref:`bool<class_bool>` **window_fullscreen**
 - :ref:`bool<class_bool>` **window_fullscreen**
@@ -581,6 +583,12 @@ If ``true``, the window is minimized.
 | *Getter* | get_window_per_pixel_transparency_enabled()      |
 | *Getter* | get_window_per_pixel_transparency_enabled()      |
 +----------+--------------------------------------------------+
 +----------+--------------------------------------------------+
 
 
+If ``true``, the window background is transparent and window frame is removed.
+
+Use ``get_tree().get_root().set_transparent_background(true)`` to disable main viewport background rendering.
+
+Note: This property has no effect if "Project > Project Settings > Display > Window > Per-pixel transparency > Allowed" setting is disabled.
+
 .. _class_OS_property_window_position:
 .. _class_OS_property_window_position:
 
 
 - :ref:`Vector2<class_Vector2>` **window_position**
 - :ref:`Vector2<class_Vector2>` **window_position**
@@ -1035,7 +1043,9 @@ Returns ``true`` if an environment 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. See feature tags documentation.
+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/latest/getting_started/workflow/export/feature_tags.html>`_ documentation for more details.
+
+Note that tag names are case-sensitive.
 
 
 .. _class_OS_method_has_touchscreen_ui_hint:
 .. _class_OS_method_has_touchscreen_ui_hint:
 
 

+ 4 - 0
classes/class_particles.rst

@@ -227,6 +227,8 @@ Time ratio between each emission. If ``0`` particles are emitted continuously. I
 | *Getter* | get_fixed_fps()      |
 | *Getter* | get_fixed_fps()      |
 +----------+----------------------+
 +----------+----------------------+
 
 
+The particle system's frame rate is fixed to a value. For instance, changing the value to 2 will make the particles render at 2 frames per second. Note this does not slow down the simulation of the particle system itself.
+
 .. _class_Particles_property_fract_delta:
 .. _class_Particles_property_fract_delta:
 
 
 - :ref:`bool<class_bool>` **fract_delta**
 - :ref:`bool<class_bool>` **fract_delta**
@@ -237,6 +239,8 @@ Time ratio between each emission. If ``0`` particles are emitted continuously. I
 | *Getter* | get_fractional_delta()      |
 | *Getter* | get_fractional_delta()      |
 +----------+-----------------------------+
 +----------+-----------------------------+
 
 
+If ``true``, results in fractional delta calculation which has a smoother particles display effect. Default value: ``true``.
+
 .. _class_Particles_property_lifetime:
 .. _class_Particles_property_lifetime:
 
 
 - :ref:`float<class_float>` **lifetime**
 - :ref:`float<class_float>` **lifetime**

+ 2 - 2
classes/class_particles2d.rst

@@ -150,7 +150,7 @@ How rapidly particles in an emission cycle are emitted. If greater than ``0``, t
 | *Getter* | get_fixed_fps()      |
 | *Getter* | get_fixed_fps()      |
 +----------+----------------------+
 +----------+----------------------+
 
 
-The particle system's frame rate is fixed to a value. For instance, changing the value to 2 will make the particles render at 2 frames per second. Note this does not slow down the particle system itself.
+The particle system's frame rate is fixed to a value. For instance, changing the value to 2 will make the particles render at 2 frames per second. Note this does not slow down the simulation of the particle system itself.
 
 
 .. _class_Particles2D_property_fract_delta:
 .. _class_Particles2D_property_fract_delta:
 
 
@@ -198,7 +198,7 @@ If ``true``, particles use the parent node's coordinate space. If ``false``, the
 | *Getter* | get_normal_map()      |
 | *Getter* | get_normal_map()      |
 +----------+-----------------------+
 +----------+-----------------------+
 
 
-Normal map to be used for the ``texture`` property.
+Normal map to be used for the :ref:`texture<class_Particles2D_property_texture>` property.
 
 
 .. _class_Particles2D_property_one_shot:
 .. _class_Particles2D_property_one_shot:
 
 

+ 5 - 5
classes/class_particlesmaterial.rst

@@ -164,7 +164,7 @@ enum **Parameter**:
 
 
 - **PARAM_ANGULAR_VELOCITY** = **1** --- Use with :ref:`set_param<class_ParticlesMaterial_method_set_param>`, :ref:`set_param_randomness<class_ParticlesMaterial_method_set_param_randomness>`, and :ref:`set_param_texture<class_ParticlesMaterial_method_set_param_texture>` to set angular velocity properties.
 - **PARAM_ANGULAR_VELOCITY** = **1** --- Use with :ref:`set_param<class_ParticlesMaterial_method_set_param>`, :ref:`set_param_randomness<class_ParticlesMaterial_method_set_param_randomness>`, and :ref:`set_param_texture<class_ParticlesMaterial_method_set_param_texture>` to set angular velocity properties.
 
 
-- **PARAM_ORBIT_VELOCITY** = **2** --- Use with :ref:`set_param<class_ParticlesMaterial_method_set_param>`, :ref:`set_param_randomness<class_ParticlesMaterial_method_set_param_randomness>`, and :ref:`set_param_texture<class_ParticlesMaterial_method_set_param_texture>` to set orbital_velocity properties.
+- **PARAM_ORBIT_VELOCITY** = **2** --- Use with :ref:`set_param<class_ParticlesMaterial_method_set_param>`, :ref:`set_param_randomness<class_ParticlesMaterial_method_set_param_randomness>`, and :ref:`set_param_texture<class_ParticlesMaterial_method_set_param_texture>` to set orbital velocity properties.
 
 
 - **PARAM_LINEAR_ACCEL** = **3** --- Use with :ref:`set_param<class_ParticlesMaterial_method_set_param>`, :ref:`set_param_randomness<class_ParticlesMaterial_method_set_param_randomness>`, and :ref:`set_param_texture<class_ParticlesMaterial_method_set_param_texture>` to set linear acceleration properties.
 - **PARAM_LINEAR_ACCEL** = **3** --- Use with :ref:`set_param<class_ParticlesMaterial_method_set_param>`, :ref:`set_param_randomness<class_ParticlesMaterial_method_set_param_randomness>`, and :ref:`set_param_texture<class_ParticlesMaterial_method_set_param_texture>` to set linear acceleration properties.
 
 
@@ -178,7 +178,7 @@ enum **Parameter**:
 
 
 - **PARAM_SCALE** = **8** --- Use with :ref:`set_param<class_ParticlesMaterial_method_set_param>`, :ref:`set_param_randomness<class_ParticlesMaterial_method_set_param_randomness>`, and :ref:`set_param_texture<class_ParticlesMaterial_method_set_param_texture>` to set scale properties.
 - **PARAM_SCALE** = **8** --- Use with :ref:`set_param<class_ParticlesMaterial_method_set_param>`, :ref:`set_param_randomness<class_ParticlesMaterial_method_set_param_randomness>`, and :ref:`set_param_texture<class_ParticlesMaterial_method_set_param_texture>` to set scale properties.
 
 
-- **PARAM_HUE_VARIATION** = **9** --- Use with :ref:`set_param<class_ParticlesMaterial_method_set_param>`, :ref:`set_param_randomness<class_ParticlesMaterial_method_set_param_randomness>`, and :ref:`set_param_texture<class_ParticlesMaterial_method_set_param_texture>` to set hue_variation properties.
+- **PARAM_HUE_VARIATION** = **9** --- Use with :ref:`set_param<class_ParticlesMaterial_method_set_param>`, :ref:`set_param_randomness<class_ParticlesMaterial_method_set_param_randomness>`, and :ref:`set_param_texture<class_ParticlesMaterial_method_set_param_texture>` to set hue variation properties.
 
 
 - **PARAM_ANIM_SPEED** = **10** --- Use with :ref:`set_param<class_ParticlesMaterial_method_set_param>`, :ref:`set_param_randomness<class_ParticlesMaterial_method_set_param_randomness>`, and :ref:`set_param_texture<class_ParticlesMaterial_method_set_param_texture>` to set animation speed properties.
 - **PARAM_ANIM_SPEED** = **10** --- Use with :ref:`set_param<class_ParticlesMaterial_method_set_param>`, :ref:`set_param_randomness<class_ParticlesMaterial_method_set_param_randomness>`, and :ref:`set_param_texture<class_ParticlesMaterial_method_set_param_texture>` to set animation speed properties.
 
 
@@ -592,7 +592,7 @@ Amount of :ref:`spread<class_ParticlesMaterial_property_spread>` in Y/Z plane. A
 | *Getter* | get_gravity()      |
 | *Getter* | get_gravity()      |
 +----------+--------------------+
 +----------+--------------------+
 
 
-Gravity applied to every particle. Default value: ``(0, 98, 0)``.
+Gravity applied to every particle. Default value: ``(0, -9.8, 0)``.
 
 
 .. _class_ParticlesMaterial_property_hue_variation:
 .. _class_ParticlesMaterial_property_hue_variation:
 
 
@@ -640,7 +640,7 @@ Hue variation randomness ratio. Default value: ``0``.
 | *Getter* | get_param()      |
 | *Getter* | get_param()      |
 +----------+------------------+
 +----------+------------------+
 
 
-Initial velocity magnitude for each particle. Direction comes from :ref:`spread<class_ParticlesMaterial_property_spread>`.
+Initial velocity magnitude for each particle. Direction comes from :ref:`spread<class_ParticlesMaterial_property_spread>` and the node's orientation.
 
 
 .. _class_ParticlesMaterial_property_initial_velocity_random:
 .. _class_ParticlesMaterial_property_initial_velocity_random:
 
 
@@ -664,7 +664,7 @@ Initial velocity randomness ratio. Default value: ``0``.
 | *Getter* | get_param()      |
 | *Getter* | get_param()      |
 +----------+------------------+
 +----------+------------------+
 
 
-Linear acceleration applied to each particle. Acceleration increases velocity magnitude each frame without affecting direction.
+Linear acceleration applied to each particle in the direction of motion.
 
 
 .. _class_ParticlesMaterial_property_linear_accel_curve:
 .. _class_ParticlesMaterial_property_linear_accel_curve:
 
 

+ 7 - 1
classes/class_primitivemesh.rst

@@ -39,7 +39,7 @@ Methods
 Description
 Description
 -----------
 -----------
 
 
-Base class for all primitive meshes. Handles applying a :ref:`Material<class_Material>` to a primitive mesh.
+Base class for all primitive meshes. Handles applying a :ref:`Material<class_Material>` to a primitive mesh. Examples include :ref:`CapsuleMesh<class_CapsuleMesh>`, :ref:`CubeMesh<class_CubeMesh>`, :ref:`CylinderMesh<class_CylinderMesh>`, :ref:`PlaneMesh<class_PlaneMesh>`, :ref:`PrismMesh<class_PrismMesh>`, :ref:`QuadMesh<class_QuadMesh>`, and :ref:`SphereMesh<class_SphereMesh>`.
 
 
 Property Descriptions
 Property Descriptions
 ---------------------
 ---------------------
@@ -54,6 +54,8 @@ Property Descriptions
 | *Getter* | get_custom_aabb()      |
 | *Getter* | get_custom_aabb()      |
 +----------+------------------------+
 +----------+------------------------+
 
 
+Overrides the :ref:`AABB<class_AABB>` with one defined by user for use with frustum culling. Especially useful to avoid unnexpected culling when  using a shader to offset vertices.
+
 .. _class_PrimitiveMesh_property_flip_faces:
 .. _class_PrimitiveMesh_property_flip_faces:
 
 
 - :ref:`bool<class_bool>` **flip_faces**
 - :ref:`bool<class_bool>` **flip_faces**
@@ -64,6 +66,8 @@ Property Descriptions
 | *Getter* | get_flip_faces()      |
 | *Getter* | get_flip_faces()      |
 +----------+-----------------------+
 +----------+-----------------------+
 
 
+If set, the order of the vertices in each triangle are reversed resulting in the backside of the mesh being drawn. Result is the same as using \*CULL_BACK\* in :ref:`SpatialMaterial<class_SpatialMaterial>`. Default is false.
+
 .. _class_PrimitiveMesh_property_material:
 .. _class_PrimitiveMesh_property_material:
 
 
 - :ref:`Material<class_Material>` **material**
 - :ref:`Material<class_Material>` **material**
@@ -83,3 +87,5 @@ Method Descriptions
 
 
 - :ref:`Array<class_Array>` **get_mesh_arrays** **(** **)** const
 - :ref:`Array<class_Array>` **get_mesh_arrays** **(** **)** const
 
 
+Returns mesh arrays used to constitute surface of :ref:`Mesh<class_Mesh>`. Mesh array can be used with :ref:`ArrayMesh<class_ArrayMesh>` to create new surface.
+

+ 2 - 6
classes/class_projectsettings.rst

@@ -168,8 +168,6 @@ Properties
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                       | :ref:`display/window/per_pixel_transparency/enabled<class_ProjectSettings_property_display/window/per_pixel_transparency/enabled>`                                   |
 | :ref:`bool<class_bool>`                       | :ref:`display/window/per_pixel_transparency/enabled<class_ProjectSettings_property_display/window/per_pixel_transparency/enabled>`                                   |
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                       | :ref:`display/window/per_pixel_transparency/splash<class_ProjectSettings_property_display/window/per_pixel_transparency/splash>`                                     |
-+-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                       | :ref:`display/window/size/always_on_top<class_ProjectSettings_property_display/window/size/always_on_top>`                                                           |
 | :ref:`bool<class_bool>`                       | :ref:`display/window/size/always_on_top<class_ProjectSettings_property_display/window/size/always_on_top>`                                                           |
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                       | :ref:`display/window/size/borderless<class_ProjectSettings_property_display/window/size/borderless>`                                                                 |
 | :ref:`bool<class_bool>`                       | :ref:`display/window/size/borderless<class_ProjectSettings_property_display/window/size/borderless>`                                                                 |
@@ -1024,15 +1022,13 @@ Default orientation on mobile devices.
 
 
 - :ref:`bool<class_bool>` **display/window/per_pixel_transparency/allowed**
 - :ref:`bool<class_bool>` **display/window/per_pixel_transparency/allowed**
 
 
-If ``true``, allows per-pixel transparency in a desktop window. This affects performance if not needed, so leave it on ``false`` unless you need it.
+If ``true``, allows per-pixel transparency in a desktop window. This affects performance, so leave it on ``false`` unless you need it.
 
 
 .. _class_ProjectSettings_property_display/window/per_pixel_transparency/enabled:
 .. _class_ProjectSettings_property_display/window/per_pixel_transparency/enabled:
 
 
 - :ref:`bool<class_bool>` **display/window/per_pixel_transparency/enabled**
 - :ref:`bool<class_bool>` **display/window/per_pixel_transparency/enabled**
 
 
-.. _class_ProjectSettings_property_display/window/per_pixel_transparency/splash:
-
-- :ref:`bool<class_bool>` **display/window/per_pixel_transparency/splash**
+Set the window background to transparent when it starts.
 
 
 .. _class_ProjectSettings_property_display/window/size/always_on_top:
 .. _class_ProjectSettings_property_display/window/size/always_on_top:
 
 

+ 2 - 0
classes/class_quadmesh.rst

@@ -41,3 +41,5 @@ Property Descriptions
 | *Getter* | get_size()      |
 | *Getter* | get_size()      |
 +----------+-----------------+
 +----------+-----------------+
 
 
+Size in the X and Y axes. Default is ``Vector2(1, 1)``.
+

+ 205 - 203
classes/class_string.rst

@@ -17,199 +17,199 @@ Built-in string class.
 Methods
 Methods
 -------
 -------
 
 
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`bool<class_bool>` from **)**                                                                                    |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`int<class_int>` from **)**                                                                                      |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`float<class_float>` from **)**                                                                                  |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`Vector2<class_Vector2>` from **)**                                                                              |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`Rect2<class_Rect2>` from **)**                                                                                  |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`Vector3<class_Vector3>` from **)**                                                                              |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`Transform2D<class_Transform2D>` from **)**                                                                      |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`Plane<class_Plane>` from **)**                                                                                  |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`Quat<class_Quat>` from **)**                                                                                    |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`AABB<class_AABB>` from **)**                                                                                    |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`Basis<class_Basis>` from **)**                                                                                  |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`Transform<class_Transform>` from **)**                                                                          |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`Color<class_Color>` from **)**                                                                                  |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`NodePath<class_NodePath>` from **)**                                                                            |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`RID<class_RID>` from **)**                                                                                      |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`Dictionary<class_Dictionary>` from **)**                                                                        |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`Array<class_Array>` from **)**                                                                                  |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`PoolByteArray<class_PoolByteArray>` from **)**                                                                  |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`PoolIntArray<class_PoolIntArray>` from **)**                                                                    |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`PoolRealArray<class_PoolRealArray>` from **)**                                                                  |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`PoolStringArray<class_PoolStringArray>` from **)**                                                              |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`PoolVector2Array<class_PoolVector2Array>` from **)**                                                            |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`PoolVector3Array<class_PoolVector3Array>` from **)**                                                            |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`PoolColorArray<class_PoolColorArray>` from **)**                                                                |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                       | :ref:`begins_with<class_String_method_begins_with>` **(** :ref:`String<class_String>` text **)**                                                                      |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PoolStringArray<class_PoolStringArray>` | :ref:`bigrams<class_String_method_bigrams>` **(** **)**                                                                                                               |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`c_escape<class_String_method_c_escape>` **(** **)**                                                                                                             |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`c_unescape<class_String_method_c_unescape>` **(** **)**                                                                                                         |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`capitalize<class_String_method_capitalize>` **(** **)**                                                                                                         |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                         | :ref:`casecmp_to<class_String_method_casecmp_to>` **(** :ref:`String<class_String>` to **)**                                                                          |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`dedent<class_String_method_dedent>` **(** **)**                                                                                                                 |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                       | :ref:`empty<class_String_method_empty>` **(** **)**                                                                                                                   |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                       | :ref:`ends_with<class_String_method_ends_with>` **(** :ref:`String<class_String>` text **)**                                                                          |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                          | :ref:`erase<class_String_method_erase>` **(** :ref:`int<class_int>` position, :ref:`int<class_int>` chars **)**                                                       |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                         | :ref:`find<class_String_method_find>` **(** :ref:`String<class_String>` what, :ref:`int<class_int>` from=0 **)**                                                      |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                         | :ref:`find_last<class_String_method_find_last>` **(** :ref:`String<class_String>` what **)**                                                                          |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                         | :ref:`findn<class_String_method_findn>` **(** :ref:`String<class_String>` what, :ref:`int<class_int>` from=0 **)**                                                    |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`format<class_String_method_format>` **(** :ref:`Variant<class_Variant>` values, :ref:`String<class_String>` placeholder={_} **)**                               |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`get_base_dir<class_String_method_get_base_dir>` **(** **)**                                                                                                     |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`get_basename<class_String_method_get_basename>` **(** **)**                                                                                                     |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`get_extension<class_String_method_get_extension>` **(** **)**                                                                                                   |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`get_file<class_String_method_get_file>` **(** **)**                                                                                                             |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                         | :ref:`hash<class_String_method_hash>` **(** **)**                                                                                                                     |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                         | :ref:`hex_to_int<class_String_method_hex_to_int>` **(** **)**                                                                                                         |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`insert<class_String_method_insert>` **(** :ref:`int<class_int>` position, :ref:`String<class_String>` what **)**                                                |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                       | :ref:`is_abs_path<class_String_method_is_abs_path>` **(** **)**                                                                                                       |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                       | :ref:`is_rel_path<class_String_method_is_rel_path>` **(** **)**                                                                                                       |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                       | :ref:`is_subsequence_of<class_String_method_is_subsequence_of>` **(** :ref:`String<class_String>` text **)**                                                          |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                       | :ref:`is_subsequence_ofi<class_String_method_is_subsequence_ofi>` **(** :ref:`String<class_String>` text **)**                                                        |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                       | :ref:`is_valid_filename<class_String_method_is_valid_filename>` **(** **)**                                                                                           |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                       | :ref:`is_valid_float<class_String_method_is_valid_float>` **(** **)**                                                                                                 |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                       | :ref:`is_valid_hex_number<class_String_method_is_valid_hex_number>` **(** :ref:`bool<class_bool>` with_prefix=False **)**                                             |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                       | :ref:`is_valid_html_color<class_String_method_is_valid_html_color>` **(** **)**                                                                                       |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                       | :ref:`is_valid_identifier<class_String_method_is_valid_identifier>` **(** **)**                                                                                       |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                       | :ref:`is_valid_integer<class_String_method_is_valid_integer>` **(** **)**                                                                                             |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                       | :ref:`is_valid_ip_address<class_String_method_is_valid_ip_address>` **(** **)**                                                                                       |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`json_escape<class_String_method_json_escape>` **(** **)**                                                                                                       |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`left<class_String_method_left>` **(** :ref:`int<class_int>` position **)**                                                                                      |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                         | :ref:`length<class_String_method_length>` **(** **)**                                                                                                                 |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`lstrip<class_String_method_lstrip>` **(** :ref:`String<class_String>` chars **)**                                                                               |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                       | :ref:`match<class_String_method_match>` **(** :ref:`String<class_String>` expr **)**                                                                                  |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                       | :ref:`matchn<class_String_method_matchn>` **(** :ref:`String<class_String>` expr **)**                                                                                |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PoolByteArray<class_PoolByteArray>`     | :ref:`md5_buffer<class_String_method_md5_buffer>` **(** **)**                                                                                                         |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`md5_text<class_String_method_md5_text>` **(** **)**                                                                                                             |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                         | :ref:`nocasecmp_to<class_String_method_nocasecmp_to>` **(** :ref:`String<class_String>` to **)**                                                                      |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                         | :ref:`ord_at<class_String_method_ord_at>` **(** :ref:`int<class_int>` at **)**                                                                                        |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`pad_decimals<class_String_method_pad_decimals>` **(** :ref:`int<class_int>` digits **)**                                                                        |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`pad_zeros<class_String_method_pad_zeros>` **(** :ref:`int<class_int>` digits **)**                                                                              |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`percent_decode<class_String_method_percent_decode>` **(** **)**                                                                                                 |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`percent_encode<class_String_method_percent_encode>` **(** **)**                                                                                                 |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`plus_file<class_String_method_plus_file>` **(** :ref:`String<class_String>` file **)**                                                                          |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`replace<class_String_method_replace>` **(** :ref:`String<class_String>` what, :ref:`String<class_String>` forwhat **)**                                         |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`replacen<class_String_method_replacen>` **(** :ref:`String<class_String>` what, :ref:`String<class_String>` forwhat **)**                                       |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                         | :ref:`rfind<class_String_method_rfind>` **(** :ref:`String<class_String>` what, :ref:`int<class_int>` from=-1 **)**                                                   |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                         | :ref:`rfindn<class_String_method_rfindn>` **(** :ref:`String<class_String>` what, :ref:`int<class_int>` from=-1 **)**                                                 |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`right<class_String_method_right>` **(** :ref:`int<class_int>` position **)**                                                                                    |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PoolStringArray<class_PoolStringArray>` | :ref:`rsplit<class_String_method_rsplit>` **(** :ref:`String<class_String>` divisor, :ref:`bool<class_bool>` allow_empty=True, :ref:`int<class_int>` maxsplit=0 **)** |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`rstrip<class_String_method_rstrip>` **(** :ref:`String<class_String>` chars **)**                                                                               |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PoolByteArray<class_PoolByteArray>`     | :ref:`sha256_buffer<class_String_method_sha256_buffer>` **(** **)**                                                                                                   |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`sha256_text<class_String_method_sha256_text>` **(** **)**                                                                                                       |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                     | :ref:`similarity<class_String_method_similarity>` **(** :ref:`String<class_String>` text **)**                                                                        |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PoolStringArray<class_PoolStringArray>` | :ref:`split<class_String_method_split>` **(** :ref:`String<class_String>` divisor, :ref:`bool<class_bool>` allow_empty=True, :ref:`int<class_int>` maxsplit=0 **)**   |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PoolRealArray<class_PoolRealArray>`     | :ref:`split_floats<class_String_method_split_floats>` **(** :ref:`String<class_String>` divisor, :ref:`bool<class_bool>` allow_empty=True **)**                       |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`strip_edges<class_String_method_strip_edges>` **(** :ref:`bool<class_bool>` left=True, :ref:`bool<class_bool>` right=True **)**                                 |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`strip_escapes<class_String_method_strip_escapes>` **(** **)**                                                                                                   |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`substr<class_String_method_substr>` **(** :ref:`int<class_int>` from, :ref:`int<class_int>` len **)**                                                           |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PoolByteArray<class_PoolByteArray>`     | :ref:`to_ascii<class_String_method_to_ascii>` **(** **)**                                                                                                             |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                     | :ref:`to_float<class_String_method_to_float>` **(** **)**                                                                                                             |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                         | :ref:`to_int<class_String_method_to_int>` **(** **)**                                                                                                                 |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`to_lower<class_String_method_to_lower>` **(** **)**                                                                                                             |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`to_upper<class_String_method_to_upper>` **(** **)**                                                                                                             |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PoolByteArray<class_PoolByteArray>`     | :ref:`to_utf8<class_String_method_to_utf8>` **(** **)**                                                                                                               |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`trim_prefix<class_String_method_trim_prefix>` **(** :ref:`String<class_String>` prefix **)**                                                                    |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`trim_suffix<class_String_method_trim_suffix>` **(** :ref:`String<class_String>` suffix **)**                                                                    |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`xml_escape<class_String_method_xml_escape>` **(** **)**                                                                                                         |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`xml_unescape<class_String_method_xml_unescape>` **(** **)**                                                                                                     |
-+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`bool<class_bool>` from **)**                                                                                      |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`int<class_int>` from **)**                                                                                        |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`float<class_float>` from **)**                                                                                    |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`Vector2<class_Vector2>` from **)**                                                                                |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`Rect2<class_Rect2>` from **)**                                                                                    |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`Vector3<class_Vector3>` from **)**                                                                                |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`Transform2D<class_Transform2D>` from **)**                                                                        |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`Plane<class_Plane>` from **)**                                                                                    |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`Quat<class_Quat>` from **)**                                                                                      |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`AABB<class_AABB>` from **)**                                                                                      |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`Basis<class_Basis>` from **)**                                                                                    |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`Transform<class_Transform>` from **)**                                                                            |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`Color<class_Color>` from **)**                                                                                    |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`NodePath<class_NodePath>` from **)**                                                                              |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`RID<class_RID>` from **)**                                                                                        |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`Dictionary<class_Dictionary>` from **)**                                                                          |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`Array<class_Array>` from **)**                                                                                    |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`PoolByteArray<class_PoolByteArray>` from **)**                                                                    |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`PoolIntArray<class_PoolIntArray>` from **)**                                                                      |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`PoolRealArray<class_PoolRealArray>` from **)**                                                                    |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`PoolStringArray<class_PoolStringArray>` from **)**                                                                |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`PoolVector2Array<class_PoolVector2Array>` from **)**                                                              |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`PoolVector3Array<class_PoolVector3Array>` from **)**                                                              |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`String<class_String_method_String>` **(** :ref:`PoolColorArray<class_PoolColorArray>` from **)**                                                                  |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                       | :ref:`begins_with<class_String_method_begins_with>` **(** :ref:`String<class_String>` text **)**                                                                        |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PoolStringArray<class_PoolStringArray>` | :ref:`bigrams<class_String_method_bigrams>` **(** **)**                                                                                                                 |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`c_escape<class_String_method_c_escape>` **(** **)**                                                                                                               |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`c_unescape<class_String_method_c_unescape>` **(** **)**                                                                                                           |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`capitalize<class_String_method_capitalize>` **(** **)**                                                                                                           |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                         | :ref:`casecmp_to<class_String_method_casecmp_to>` **(** :ref:`String<class_String>` to **)**                                                                            |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`dedent<class_String_method_dedent>` **(** **)**                                                                                                                   |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                       | :ref:`empty<class_String_method_empty>` **(** **)**                                                                                                                     |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                       | :ref:`ends_with<class_String_method_ends_with>` **(** :ref:`String<class_String>` text **)**                                                                            |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`erase<class_String_method_erase>` **(** :ref:`int<class_int>` position, :ref:`int<class_int>` chars **)**                                                         |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                         | :ref:`find<class_String_method_find>` **(** :ref:`String<class_String>` what, :ref:`int<class_int>` from=0 **)**                                                        |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                         | :ref:`find_last<class_String_method_find_last>` **(** :ref:`String<class_String>` what **)**                                                                            |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                         | :ref:`findn<class_String_method_findn>` **(** :ref:`String<class_String>` what, :ref:`int<class_int>` from=0 **)**                                                      |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`format<class_String_method_format>` **(** :ref:`Variant<class_Variant>` values, :ref:`String<class_String>` placeholder={_} **)**                                 |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`get_base_dir<class_String_method_get_base_dir>` **(** **)**                                                                                                       |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`get_basename<class_String_method_get_basename>` **(** **)**                                                                                                       |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`get_extension<class_String_method_get_extension>` **(** **)**                                                                                                     |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`get_file<class_String_method_get_file>` **(** **)**                                                                                                               |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                         | :ref:`hash<class_String_method_hash>` **(** **)**                                                                                                                       |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                         | :ref:`hex_to_int<class_String_method_hex_to_int>` **(** **)**                                                                                                           |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`insert<class_String_method_insert>` **(** :ref:`int<class_int>` position, :ref:`String<class_String>` what **)**                                                  |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                       | :ref:`is_abs_path<class_String_method_is_abs_path>` **(** **)**                                                                                                         |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                       | :ref:`is_rel_path<class_String_method_is_rel_path>` **(** **)**                                                                                                         |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                       | :ref:`is_subsequence_of<class_String_method_is_subsequence_of>` **(** :ref:`String<class_String>` text **)**                                                            |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                       | :ref:`is_subsequence_ofi<class_String_method_is_subsequence_ofi>` **(** :ref:`String<class_String>` text **)**                                                          |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                       | :ref:`is_valid_filename<class_String_method_is_valid_filename>` **(** **)**                                                                                             |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                       | :ref:`is_valid_float<class_String_method_is_valid_float>` **(** **)**                                                                                                   |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                       | :ref:`is_valid_hex_number<class_String_method_is_valid_hex_number>` **(** :ref:`bool<class_bool>` with_prefix=False **)**                                               |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                       | :ref:`is_valid_html_color<class_String_method_is_valid_html_color>` **(** **)**                                                                                         |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                       | :ref:`is_valid_identifier<class_String_method_is_valid_identifier>` **(** **)**                                                                                         |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                       | :ref:`is_valid_integer<class_String_method_is_valid_integer>` **(** **)**                                                                                               |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                       | :ref:`is_valid_ip_address<class_String_method_is_valid_ip_address>` **(** **)**                                                                                         |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`json_escape<class_String_method_json_escape>` **(** **)**                                                                                                         |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`left<class_String_method_left>` **(** :ref:`int<class_int>` position **)**                                                                                        |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                         | :ref:`length<class_String_method_length>` **(** **)**                                                                                                                   |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`lstrip<class_String_method_lstrip>` **(** :ref:`String<class_String>` chars **)**                                                                                 |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                       | :ref:`match<class_String_method_match>` **(** :ref:`String<class_String>` expr **)**                                                                                    |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                       | :ref:`matchn<class_String_method_matchn>` **(** :ref:`String<class_String>` expr **)**                                                                                  |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PoolByteArray<class_PoolByteArray>`     | :ref:`md5_buffer<class_String_method_md5_buffer>` **(** **)**                                                                                                           |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`md5_text<class_String_method_md5_text>` **(** **)**                                                                                                               |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                         | :ref:`nocasecmp_to<class_String_method_nocasecmp_to>` **(** :ref:`String<class_String>` to **)**                                                                        |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                         | :ref:`ord_at<class_String_method_ord_at>` **(** :ref:`int<class_int>` at **)**                                                                                          |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`pad_decimals<class_String_method_pad_decimals>` **(** :ref:`int<class_int>` digits **)**                                                                          |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`pad_zeros<class_String_method_pad_zeros>` **(** :ref:`int<class_int>` digits **)**                                                                                |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`percent_decode<class_String_method_percent_decode>` **(** **)**                                                                                                   |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`percent_encode<class_String_method_percent_encode>` **(** **)**                                                                                                   |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`plus_file<class_String_method_plus_file>` **(** :ref:`String<class_String>` file **)**                                                                            |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`replace<class_String_method_replace>` **(** :ref:`String<class_String>` what, :ref:`String<class_String>` forwhat **)**                                           |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`replacen<class_String_method_replacen>` **(** :ref:`String<class_String>` what, :ref:`String<class_String>` forwhat **)**                                         |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                         | :ref:`rfind<class_String_method_rfind>` **(** :ref:`String<class_String>` what, :ref:`int<class_int>` from=-1 **)**                                                     |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                         | :ref:`rfindn<class_String_method_rfindn>` **(** :ref:`String<class_String>` what, :ref:`int<class_int>` from=-1 **)**                                                   |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`right<class_String_method_right>` **(** :ref:`int<class_int>` position **)**                                                                                      |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PoolStringArray<class_PoolStringArray>` | :ref:`rsplit<class_String_method_rsplit>` **(** :ref:`String<class_String>` delimiter, :ref:`bool<class_bool>` allow_empty=True, :ref:`int<class_int>` maxsplit=0 **)** |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`rstrip<class_String_method_rstrip>` **(** :ref:`String<class_String>` chars **)**                                                                                 |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PoolByteArray<class_PoolByteArray>`     | :ref:`sha256_buffer<class_String_method_sha256_buffer>` **(** **)**                                                                                                     |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`sha256_text<class_String_method_sha256_text>` **(** **)**                                                                                                         |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                     | :ref:`similarity<class_String_method_similarity>` **(** :ref:`String<class_String>` text **)**                                                                          |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PoolStringArray<class_PoolStringArray>` | :ref:`split<class_String_method_split>` **(** :ref:`String<class_String>` delimiter, :ref:`bool<class_bool>` allow_empty=True, :ref:`int<class_int>` maxsplit=0 **)**   |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PoolRealArray<class_PoolRealArray>`     | :ref:`split_floats<class_String_method_split_floats>` **(** :ref:`String<class_String>` delimiter, :ref:`bool<class_bool>` allow_empty=True **)**                       |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`strip_edges<class_String_method_strip_edges>` **(** :ref:`bool<class_bool>` left=True, :ref:`bool<class_bool>` right=True **)**                                   |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`strip_escapes<class_String_method_strip_escapes>` **(** **)**                                                                                                     |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`substr<class_String_method_substr>` **(** :ref:`int<class_int>` from, :ref:`int<class_int>` len **)**                                                             |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PoolByteArray<class_PoolByteArray>`     | :ref:`to_ascii<class_String_method_to_ascii>` **(** **)**                                                                                                               |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                     | :ref:`to_float<class_String_method_to_float>` **(** **)**                                                                                                               |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                         | :ref:`to_int<class_String_method_to_int>` **(** **)**                                                                                                                   |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`to_lower<class_String_method_to_lower>` **(** **)**                                                                                                               |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`to_upper<class_String_method_to_upper>` **(** **)**                                                                                                               |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PoolByteArray<class_PoolByteArray>`     | :ref:`to_utf8<class_String_method_to_utf8>` **(** **)**                                                                                                                 |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`trim_prefix<class_String_method_trim_prefix>` **(** :ref:`String<class_String>` prefix **)**                                                                      |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`trim_suffix<class_String_method_trim_suffix>` **(** :ref:`String<class_String>` suffix **)**                                                                      |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`xml_escape<class_String_method_xml_escape>` **(** **)**                                                                                                           |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`xml_unescape<class_String_method_xml_unescape>` **(** **)**                                                                                                       |
++-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 
 Description
 Description
 -----------
 -----------
@@ -638,13 +638,15 @@ Returns the right side of the string from a given position.
 
 
 .. _class_String_method_rsplit:
 .. _class_String_method_rsplit:
 
 
-- :ref:`PoolStringArray<class_PoolStringArray>` **rsplit** **(** :ref:`String<class_String>` divisor, :ref:`bool<class_bool>` allow_empty=True, :ref:`int<class_int>` maxsplit=0 **)**
+- :ref:`PoolStringArray<class_PoolStringArray>` **rsplit** **(** :ref:`String<class_String>` delimiter, :ref:`bool<class_bool>` allow_empty=True, :ref:`int<class_int>` maxsplit=0 **)**
 
 
-Splits the string by a ``divisor`` string and returns an array of the substrings, starting from right.
+Splits the string by a ``delimiter`` string and returns an array of the substrings, starting from right.
 
 
-**Example:** ``"One,Two,Three"`` will return ``["One","Two","Three"]`` if split by ``","``.
+The splits in the returned array are sorted in the same order as the original string, from left to right.
 
 
-If ``maxsplit`` is specified, then it is number of splits to do, default is 0 which splits all the items.
+If ``maxsplit`` is specified, it defines the number of splits to do from the right up to ``maxsplit``. The default value of 0 means that all items are split, thus giving the same result as :ref:`split<class_String_method_split>`.
+
+**Example:** ``"One,Two,Three,Four"`` will return ``["Three","Four"]`` if split by ``","`` with ``maxsplit`` of 2.
 
 
 .. _class_String_method_rstrip:
 .. _class_String_method_rstrip:
 
 
@@ -672,19 +674,19 @@ Returns the similarity index of the text compared to this string. 1 means totall
 
 
 .. _class_String_method_split:
 .. _class_String_method_split:
 
 
-- :ref:`PoolStringArray<class_PoolStringArray>` **split** **(** :ref:`String<class_String>` divisor, :ref:`bool<class_bool>` allow_empty=True, :ref:`int<class_int>` maxsplit=0 **)**
+- :ref:`PoolStringArray<class_PoolStringArray>` **split** **(** :ref:`String<class_String>` delimiter, :ref:`bool<class_bool>` allow_empty=True, :ref:`int<class_int>` maxsplit=0 **)**
 
 
-Splits the string by a divisor string and returns an array of the substrings.
+Splits the string by a ``delimiter`` string and returns an array of the substrings.
 
 
-**Example:** ``"One,Two,Three"`` will return ``["One","Two","Three"]`` if split by ``","``.
+If ``maxsplit`` is specified, it defines the number of splits to do from the left up to ``maxsplit``. The default value of 0 means that all items are split.
 
 
-If ``maxsplit`` is given, at most maxsplit number of splits occur, and the remainder of the string is returned as the final element of the list (thus, the list will have at most maxsplit+1 elements)
+**Example:** ``"One,Two,Three"`` will return ``["One","Two"]`` if split by ``","`` with ``maxsplit`` of 2.
 
 
 .. _class_String_method_split_floats:
 .. _class_String_method_split_floats:
 
 
-- :ref:`PoolRealArray<class_PoolRealArray>` **split_floats** **(** :ref:`String<class_String>` divisor, :ref:`bool<class_bool>` allow_empty=True **)**
+- :ref:`PoolRealArray<class_PoolRealArray>` **split_floats** **(** :ref:`String<class_String>` delimiter, :ref:`bool<class_bool>` allow_empty=True **)**
 
 
-Splits the string in floats by using a divisor string and returns an array of the substrings.
+Splits the string in floats by using a delimiter string and returns an array of the substrings.
 
 
 **Example:** ``"1,2.5,3"`` will return ``[1,2.5,3]`` if split by ``","``.
 **Example:** ``"1,2.5,3"`` will return ``[1,2.5,3]`` if split by ``","``.
 
 

+ 2 - 2
classes/class_textedit.rst

@@ -38,7 +38,7 @@ Properties
 +-----------------------------+-------------------------------------------------------------------------------------------+
 +-----------------------------+-------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`     | :ref:`fold_gutter<class_TextEdit_property_fold_gutter>`                                   |
 | :ref:`bool<class_bool>`     | :ref:`fold_gutter<class_TextEdit_property_fold_gutter>`                                   |
 +-----------------------------+-------------------------------------------------------------------------------------------+
 +-----------------------------+-------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`       | :ref:`hiding_enabled<class_TextEdit_property_hiding_enabled>`                             |
+| :ref:`bool<class_bool>`     | :ref:`hiding_enabled<class_TextEdit_property_hiding_enabled>`                             |
 +-----------------------------+-------------------------------------------------------------------------------------------+
 +-----------------------------+-------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`     | :ref:`highlight_all_occurrences<class_TextEdit_property_highlight_all_occurrences>`       |
 | :ref:`bool<class_bool>`     | :ref:`highlight_all_occurrences<class_TextEdit_property_highlight_all_occurrences>`       |
 +-----------------------------+-------------------------------------------------------------------------------------------+
 +-----------------------------+-------------------------------------------------------------------------------------------+
@@ -441,7 +441,7 @@ If ``true``, the fold gutter is visible. This enables folding groups of indented
 
 
 .. _class_TextEdit_property_hiding_enabled:
 .. _class_TextEdit_property_hiding_enabled:
 
 
-- :ref:`int<class_int>` **hiding_enabled**
+- :ref:`bool<class_bool>` **hiding_enabled**
 
 
 +----------+---------------------------+
 +----------+---------------------------+
 | *Setter* | set_hiding_enabled(value) |
 | *Setter* | set_hiding_enabled(value) |

+ 5 - 0
classes/class_trianglemesh.rst

@@ -14,5 +14,10 @@ TriangleMesh
 Brief Description
 Brief Description
 -----------------
 -----------------
 
 
+Internal mesh type.
 
 
+Description
+-----------
+
+Mesh type used internally for collision calculations.
 
 

+ 1 - 1
classes/class_vehiclewheel.rst

@@ -207,7 +207,7 @@ Method Descriptions
 
 
 - :ref:`float<class_float>` **get_skidinfo** **(** **)** const
 - :ref:`float<class_float>` **get_skidinfo** **(** **)** const
 
 
-Returns a value between 0.0 and 1.0 that indicates whether this wheel is skidding. 0.0 is not skidding, 1.0 means the wheel has lost grip.
+Returns a value between 0.0 and 1.0 that indicates whether this wheel is skidding. 0.0 is skidding (the wheel has lost grip, e.g. icy terrain), 1.0 means not skidding (the wheel has full grip, e.g. dry asphalt road).
 
 
 .. _class_VehicleWheel_method_is_in_contact:
 .. _class_VehicleWheel_method_is_in_contact:
 
 

+ 36 - 6
classes/class_webrtcdatachannel.rst

@@ -63,9 +63,9 @@ Enumerations
 
 
 enum **WriteMode**:
 enum **WriteMode**:
 
 
-- **WRITE_MODE_TEXT** = **0**
+- **WRITE_MODE_TEXT** = **0** --- Tells the channel to send data over this channel as text. An external peer (non-Godot) would receive this as a string.
 
 
-- **WRITE_MODE_BINARY** = **1**
+- **WRITE_MODE_BINARY** = **1** --- Tells the channel to send data over this channel as binary. An external peer (non-Godot) would receive this as array buffer or blob.
 
 
 .. _enum_WebRTCDataChannel_ChannelState:
 .. _enum_WebRTCDataChannel_ChannelState:
 
 
@@ -79,13 +79,13 @@ enum **WriteMode**:
 
 
 enum **ChannelState**:
 enum **ChannelState**:
 
 
-- **STATE_CONNECTING** = **0**
+- **STATE_CONNECTING** = **0** --- The channel was created, but it's still trying to connect.
 
 
-- **STATE_OPEN** = **1**
+- **STATE_OPEN** = **1** --- The channel is currently open, and data can flow over it.
 
 
-- **STATE_CLOSING** = **2**
+- **STATE_CLOSING** = **2** --- The channel is being closed, no new messages will be accepted, but those already in queue will be flushed.
 
 
-- **STATE_CLOSED** = **3**
+- **STATE_CLOSED** = **3** --- The channel was closed, or connection failed.
 
 
 Property Descriptions
 Property Descriptions
 ---------------------
 ---------------------
@@ -100,6 +100,8 @@ Property Descriptions
 | *Getter* | get_write_mode()      |
 | *Getter* | get_write_mode()      |
 +----------+-----------------------+
 +----------+-----------------------+
 
 
+The transfer mode to use when sending outgoing packet. Either text or binary.
+
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
 
 
@@ -107,43 +109,71 @@ Method Descriptions
 
 
 - void **close** **(** **)**
 - void **close** **(** **)**
 
 
+Closes this data channel, notifying the other peer.
+
 .. _class_WebRTCDataChannel_method_get_id:
 .. _class_WebRTCDataChannel_method_get_id:
 
 
 - :ref:`int<class_int>` **get_id** **(** **)** const
 - :ref:`int<class_int>` **get_id** **(** **)** const
 
 
+Returns the id assigned to this channel during creation (or auto-assigned during negotiation).
+
+If the channel is not negotiated out-of-band the id will only be available after the connection is established (will return ``65535`` until then).
+
 .. _class_WebRTCDataChannel_method_get_label:
 .. _class_WebRTCDataChannel_method_get_label:
 
 
 - :ref:`String<class_String>` **get_label** **(** **)** const
 - :ref:`String<class_String>` **get_label** **(** **)** const
 
 
+Returns the label assigned to this channel during creation.
+
 .. _class_WebRTCDataChannel_method_get_max_packet_life_time:
 .. _class_WebRTCDataChannel_method_get_max_packet_life_time:
 
 
 - :ref:`int<class_int>` **get_max_packet_life_time** **(** **)** const
 - :ref:`int<class_int>` **get_max_packet_life_time** **(** **)** const
 
 
+Returns the ``maxPacketLifeTime`` value assigned to this channel during creation.
+
+Will be ``65535`` if not specified.
+
 .. _class_WebRTCDataChannel_method_get_max_retransmits:
 .. _class_WebRTCDataChannel_method_get_max_retransmits:
 
 
 - :ref:`int<class_int>` **get_max_retransmits** **(** **)** const
 - :ref:`int<class_int>` **get_max_retransmits** **(** **)** const
 
 
+Returns the ``maxRetransmits`` value assigned to this channel during creation.
+
+Will be ``65535`` if not specified.
+
 .. _class_WebRTCDataChannel_method_get_protocol:
 .. _class_WebRTCDataChannel_method_get_protocol:
 
 
 - :ref:`String<class_String>` **get_protocol** **(** **)** const
 - :ref:`String<class_String>` **get_protocol** **(** **)** const
 
 
+Returns the sub-protocol assigned to this channel during creation. An empty string if not specified.
+
 .. _class_WebRTCDataChannel_method_get_ready_state:
 .. _class_WebRTCDataChannel_method_get_ready_state:
 
 
 - :ref:`ChannelState<enum_WebRTCDataChannel_ChannelState>` **get_ready_state** **(** **)** const
 - :ref:`ChannelState<enum_WebRTCDataChannel_ChannelState>` **get_ready_state** **(** **)** const
 
 
+Returns the current state of this channel, see :ref:`ChannelState<enum_WebRTCDataChannel_ChannelState>`.
+
 .. _class_WebRTCDataChannel_method_is_negotiated:
 .. _class_WebRTCDataChannel_method_is_negotiated:
 
 
 - :ref:`bool<class_bool>` **is_negotiated** **(** **)** const
 - :ref:`bool<class_bool>` **is_negotiated** **(** **)** const
 
 
+Returns ``true`` if this channel was created with out-of-band configuration.
+
 .. _class_WebRTCDataChannel_method_is_ordered:
 .. _class_WebRTCDataChannel_method_is_ordered:
 
 
 - :ref:`bool<class_bool>` **is_ordered** **(** **)** const
 - :ref:`bool<class_bool>` **is_ordered** **(** **)** const
 
 
+Returns ``true`` if this channel was created with ordering enabled (default).
+
 .. _class_WebRTCDataChannel_method_poll:
 .. _class_WebRTCDataChannel_method_poll:
 
 
 - :ref:`Error<enum_@GlobalScope_Error>` **poll** **(** **)**
 - :ref:`Error<enum_@GlobalScope_Error>` **poll** **(** **)**
 
 
+Reserved, but not used for now.
+
 .. _class_WebRTCDataChannel_method_was_string_packet:
 .. _class_WebRTCDataChannel_method_was_string_packet:
 
 
 - :ref:`bool<class_bool>` **was_string_packet** **(** **)** const
 - :ref:`bool<class_bool>` **was_string_packet** **(** **)** const
 
 
+Returns ``true`` if the last received packet was transferred as text. See :ref:`write_mode<class_WebRTCDataChannel_property_write_mode>`.
+

+ 97 - 0
classes/class_webrtcmultiplayer.rst

@@ -0,0 +1,97 @@
+.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the WebRTCMultiplayer.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_WebRTCMultiplayer:
+
+WebRTCMultiplayer
+=================
+
+**Inherits:** :ref:`NetworkedMultiplayerPeer<class_NetworkedMultiplayerPeer>` **<** :ref:`PacketPeer<class_PacketPeer>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+
+**Category:** Core
+
+Brief Description
+-----------------
+
+A simple interface to create a peer-to-peer mesh network composed of :ref:`WebRTCPeerConnection<class_WebRTCPeerConnection>` that is compatible with the :ref:`MultiplayerAPI<class_MultiplayerAPI>`.
+
+Methods
+-------
+
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`add_peer<class_WebRTCMultiplayer_method_add_peer>` **(** :ref:`WebRTCPeerConnection<class_WebRTCPeerConnection>` peer, :ref:`int<class_int>` peer_id, :ref:`int<class_int>` unreliable_lifetime=1 **)** |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`close<class_WebRTCMultiplayer_method_close>` **(** **)**                                                                                                                                                |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>`   | :ref:`get_peer<class_WebRTCMultiplayer_method_get_peer>` **(** :ref:`int<class_int>` peer_id **)**                                                                                                            |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>`   | :ref:`get_peers<class_WebRTCMultiplayer_method_get_peers>` **(** **)**                                                                                                                                        |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`               | :ref:`has_peer<class_WebRTCMultiplayer_method_has_peer>` **(** :ref:`int<class_int>` peer_id **)**                                                                                                            |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`initialize<class_WebRTCMultiplayer_method_initialize>` **(** :ref:`int<class_int>` peer_id, :ref:`bool<class_bool>` server_compatibility=false **)**                                                    |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`remove_peer<class_WebRTCMultiplayer_method_remove_peer>` **(** :ref:`int<class_int>` peer_id **)**                                                                                                      |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+Description
+-----------
+
+This class constructs a full mesh of :ref:`WebRTCPeerConnection<class_WebRTCPeerConnection>` (one connection for each peer) that can be used as a :ref:`MultiplayerAPI.network_peer<class_MultiplayerAPI_property_network_peer>`.
+
+You can add each :ref:`WebRTCPeerConnection<class_WebRTCPeerConnection>` via :ref:`add_peer<class_WebRTCMultiplayer_method_add_peer>` or remove them via :ref:`remove_peer<class_WebRTCMultiplayer_method_remove_peer>`. Peers must be added in :ref:`WebRTCPeerConnection.STATE_NEW<class_WebRTCPeerConnection_constant_STATE_NEW>` state to allow it to create the appropriate channels. This class will not create offers nor set descriptions, it will only poll them, and notify connections and disconnections.
+
+:ref:`NetworkedMultiplayerPeer.connection_succeeded<class_NetworkedMultiplayerPeer_signal_connection_succeeded>` and :ref:`NetworkedMultiplayerPeer.server_disconnected<class_NetworkedMultiplayerPeer_signal_server_disconnected>` will not be emitted unless ``server_compatibility`` is ``true`` in :ref:`initialize<class_WebRTCMultiplayer_method_initialize>`. Beside that data transfer works like in a :ref:`NetworkedMultiplayerPeer<class_NetworkedMultiplayerPeer>`.
+
+Method Descriptions
+-------------------
+
+.. _class_WebRTCMultiplayer_method_add_peer:
+
+- :ref:`Error<enum_@GlobalScope_Error>` **add_peer** **(** :ref:`WebRTCPeerConnection<class_WebRTCPeerConnection>` peer, :ref:`int<class_int>` peer_id, :ref:`int<class_int>` unreliable_lifetime=1 **)**
+
+Add a new peer to the mesh with the given ``peer_id``. The :ref:`WebRTCPeerConnection<class_WebRTCPeerConnection>` must be in state :ref:`WebRTCPeerConnection.STATE_NEW<class_WebRTCPeerConnection_constant_STATE_NEW>`.
+
+Three channels will be created for reliable, unreliable, and ordered transport. The value of ``unreliable_lifetime`` will be passed to the ``maxPacketLifetime`` option when creating unreliable and ordered channels (see :ref:`WebRTCPeerConnection.create_data_channel<class_WebRTCPeerConnection_method_create_data_channel>`).
+
+.. _class_WebRTCMultiplayer_method_close:
+
+- void **close** **(** **)**
+
+Close all the add peer connections and channels, freeing all resources.
+
+.. _class_WebRTCMultiplayer_method_get_peer:
+
+- :ref:`Dictionary<class_Dictionary>` **get_peer** **(** :ref:`int<class_int>` peer_id **)**
+
+Return a dictionary representation of the peer with given ``peer_id`` with three keys. ``connection`` containing the :ref:`WebRTCPeerConnection<class_WebRTCPeerConnection>` to this peer, ``channels`` an array of three :ref:`WebRTCDataChannel<class_WebRTCDataChannel>`, and ``connected`` a boolean representing if the peer connection is currently connected (all three channels are open).
+
+.. _class_WebRTCMultiplayer_method_get_peers:
+
+- :ref:`Dictionary<class_Dictionary>` **get_peers** **(** **)**
+
+Returns a dictionary which keys are the peer ids and values the peer representation as in :ref:`get_peer<class_WebRTCMultiplayer_method_get_peer>`
+
+.. _class_WebRTCMultiplayer_method_has_peer:
+
+- :ref:`bool<class_bool>` **has_peer** **(** :ref:`int<class_int>` peer_id **)**
+
+Returns ``true`` if the given ``peer_id`` is in the peers map (it might not be connected though).
+
+.. _class_WebRTCMultiplayer_method_initialize:
+
+- :ref:`Error<enum_@GlobalScope_Error>` **initialize** **(** :ref:`int<class_int>` peer_id, :ref:`bool<class_bool>` server_compatibility=false **)**
+
+Initialize the multiplayer peer with the given ``peer_id`` (must be between 1 and 2147483647).
+
+If ``server_compatibilty`` is ``false`` (default), the multiplayer peer will be immediately in state :ref:`NetworkedMultiplayerPeer.CONNECTION_CONNECTED<class_NetworkedMultiplayerPeer_constant_CONNECTION_CONNECTED>` and :ref:`NetworkedMultiplayerPeer.connection_succeeded<class_NetworkedMultiplayerPeer_signal_connection_succeeded>` will not be emitted.
+
+If ``server_compatibilty`` is ``true`` the peer will suppress all :ref:`NetworkedMultiplayerPeer.peer_connected<class_NetworkedMultiplayerPeer_signal_peer_connected>` signals until a peer with id :ref:`NetworkedMultiplayerPeer.TARGET_PEER_SERVER<class_NetworkedMultiplayerPeer_constant_TARGET_PEER_SERVER>` connects and then emit :ref:`NetworkedMultiplayerPeer.connection_succeeded<class_NetworkedMultiplayerPeer_signal_connection_succeeded>`. After that the signal :ref:`NetworkedMultiplayerPeer.peer_connected<class_NetworkedMultiplayerPeer_signal_peer_connected>` will be emitted for every already connected peer, and any new peer that might connect. If the server peer disconnects after that, signal :ref:`NetworkedMultiplayerPeer.server_disconnected<class_NetworkedMultiplayerPeer_signal_server_disconnected>` will be emitted and state will become :ref:`NetworkedMultiplayerPeer.CONNECTION_CONNECTED<class_NetworkedMultiplayerPeer_constant_CONNECTION_CONNECTED>`.
+
+.. _class_WebRTCMultiplayer_method_remove_peer:
+
+- void **remove_peer** **(** :ref:`int<class_int>` peer_id **)**
+
+Remove the peer with given ``peer_id`` from the mesh. If the peer was connected, and :ref:`NetworkedMultiplayerPeer.peer_connected<class_NetworkedMultiplayerPeer_signal_peer_connected>` was emitted for it, then :ref:`NetworkedMultiplayerPeer.peer_disconnected<class_NetworkedMultiplayerPeer_signal_peer_disconnected>` will be emitted.
+

+ 93 - 7
classes/class_webrtcpeerconnection.rst

@@ -16,7 +16,7 @@ WebRTCPeerConnection
 Brief Description
 Brief Description
 -----------------
 -----------------
 
 
-
+Interface to a WebRTC peer connection.
 
 
 Methods
 Methods
 -------
 -------
@@ -48,14 +48,22 @@ Signals
 
 
 - **data_channel_received** **(** :ref:`Object<class_Object>` channel **)**
 - **data_channel_received** **(** :ref:`Object<class_Object>` channel **)**
 
 
+Emitted when a new in-band channel is received, i.e. when the channel was created with ``negotiated: false`` (default).
+
+The object will be an instance of :ref:`WebRTCDataChannel<class_WebRTCDataChannel>`. You must keep a reference of it or it will be closed automatically. See :ref:`create_data_channel<class_WebRTCPeerConnection_method_create_data_channel>`
+
 .. _class_WebRTCPeerConnection_signal_ice_candidate_created:
 .. _class_WebRTCPeerConnection_signal_ice_candidate_created:
 
 
 - **ice_candidate_created** **(** :ref:`String<class_String>` media, :ref:`int<class_int>` index, :ref:`String<class_String>` name **)**
 - **ice_candidate_created** **(** :ref:`String<class_String>` media, :ref:`int<class_int>` index, :ref:`String<class_String>` name **)**
 
 
+Emitted when a new ICE candidate has been created. The three parameters are meant to be passed to the remote peer over the signaling server.
+
 .. _class_WebRTCPeerConnection_signal_session_description_created:
 .. _class_WebRTCPeerConnection_signal_session_description_created:
 
 
 - **session_description_created** **(** :ref:`String<class_String>` type, :ref:`String<class_String>` sdp **)**
 - **session_description_created** **(** :ref:`String<class_String>` type, :ref:`String<class_String>` sdp **)**
 
 
+Emitted after a successful call to :ref:`create_offer<class_WebRTCPeerConnection_method_create_offer>` or :ref:`set_remote_description<class_WebRTCPeerConnection_method_set_remote_description>` (when it generates an answer). The parameters are meant to be passed to :ref:`set_local_description<class_WebRTCPeerConnection_method_set_local_description>` on this object, and sent to the remote peer over the signaling server.
+
 Enumerations
 Enumerations
 ------------
 ------------
 
 
@@ -75,17 +83,32 @@ Enumerations
 
 
 enum **ConnectionState**:
 enum **ConnectionState**:
 
 
-- **STATE_NEW** = **0**
+- **STATE_NEW** = **0** --- The connection is new, data channels and an offer can be created in this state.
+
+- **STATE_CONNECTING** = **1** --- The peer is connecting, ICE is in progress, non of the transports has failed.
+
+- **STATE_CONNECTED** = **2** --- The peer is connected, all ICE transports are connected.
+
+- **STATE_DISCONNECTED** = **3** --- At least one ICE transport is disconnected.
+
+- **STATE_FAILED** = **4** --- One or more of the ICE transports failed.
 
 
-- **STATE_CONNECTING** = **1**
+- **STATE_CLOSED** = **5** --- The peer connection is closed (after calling :ref:`close<class_WebRTCPeerConnection_method_close>` for example).
 
 
-- **STATE_CONNECTED** = **2**
+Description
+-----------
 
 
-- **STATE_DISCONNECTED** = **3**
+A WebRTC connection between the local computer and a remote peer. Provides an interface to connect, maintain and monitor the connection.
 
 
-- **STATE_FAILED** = **4**
+Setting up a WebRTC connection between two peers from now on) may not seem a trivial task, but it can be broken down into 3 main steps:
 
 
-- **STATE_CLOSED** = **5**
+- The peer that wants to initiate the connection (``A`` from now on) creates an offer and send it to the other peer (``B`` from now on).
+
+- ``B`` receives the offer, generate and answer, and sends it to ``B``).
+
+- ``A`` and ``B`` then generates and exchange ICE candidates with each other.
+
+After these steps, the connection should become connected. Keep on reading or look into the tutorial for more information.
 
 
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
@@ -94,35 +117,98 @@ Method Descriptions
 
 
 - :ref:`Error<enum_@GlobalScope_Error>` **add_ice_candidate** **(** :ref:`String<class_String>` media, :ref:`int<class_int>` index, :ref:`String<class_String>` name **)**
 - :ref:`Error<enum_@GlobalScope_Error>` **add_ice_candidate** **(** :ref:`String<class_String>` media, :ref:`int<class_int>` index, :ref:`String<class_String>` name **)**
 
 
+Add an ice candidate generated by a remote peer (and received over the signaling server). See :ref:`ice_candidate_created<class_WebRTCPeerConnection_signal_ice_candidate_created>`.
+
 .. _class_WebRTCPeerConnection_method_close:
 .. _class_WebRTCPeerConnection_method_close:
 
 
 - void **close** **(** **)**
 - void **close** **(** **)**
 
 
+Close the peer connection and all data channels associated with it. Note, you cannot reuse this object for a new connection unless you call :ref:`initialize<class_WebRTCPeerConnection_method_initialize>`.
+
 .. _class_WebRTCPeerConnection_method_create_data_channel:
 .. _class_WebRTCPeerConnection_method_create_data_channel:
 
 
 - :ref:`WebRTCDataChannel<class_WebRTCDataChannel>` **create_data_channel** **(** :ref:`String<class_String>` label, :ref:`Dictionary<class_Dictionary>` options={  } **)**
 - :ref:`WebRTCDataChannel<class_WebRTCDataChannel>` **create_data_channel** **(** :ref:`String<class_String>` label, :ref:`Dictionary<class_Dictionary>` options={  } **)**
 
 
+Returns a new :ref:`WebRTCDataChannel<class_WebRTCDataChannel>` (or ``null`` on failure) with given ``label`` and optionally configured via the ``options`` dictionary. This method can only be called when the connection is in state :ref:`STATE_NEW<class_WebRTCPeerConnection_constant_STATE_NEW>`.
+
+There are two ways to create a working data channel: either call :ref:`create_data_channel<class_WebRTCPeerConnection_method_create_data_channel>` on only one of the peer and listen to :ref:`data_channel_received<class_WebRTCPeerConnection_signal_data_channel_received>` on the other, or call :ref:`create_data_channel<class_WebRTCPeerConnection_method_create_data_channel>` on both peers, with the same values, and the ``negotiated`` option set to ``true``.
+
+Valid ``options`` are:
+
+::
+
+    {
+        "negotiated": true, # When set to true (default off), means the channel is negotiated out of band. "id" must be set too. data_channel_received will not be called.
+        "id": 1, # When "negotiated" is true this value must also be set to the same value on both peer.
+    
+        # Only one of maxRetransmits and maxPacketLifeTime can be specified, not both. They make the channel unreliable (but also better at real time).
+        "maxRetransmits": 1, # Specify the maximum number of attempt the peer will make to retransmits packets if they are not acknowledged.
+        "maxPacketLifeTime": 100, # Specify the maximum amount of time before giving up retransmitions of unacknowledged packets (in milliseconds).
+        "ordered": true, # When in unreliable mode (i.e. either "maxRetransmits" or "maxPacketLifetime" is set), "ordered" (true by default) specify if packet ordering is to be enforced.
+    
+        "protocol": "my-custom-protocol", # A custom sub-protocol string for this channel.
+    }
+
+NOTE: You must keep a reference to channels created this way, or it will be closed.
+
 .. _class_WebRTCPeerConnection_method_create_offer:
 .. _class_WebRTCPeerConnection_method_create_offer:
 
 
 - :ref:`Error<enum_@GlobalScope_Error>` **create_offer** **(** **)**
 - :ref:`Error<enum_@GlobalScope_Error>` **create_offer** **(** **)**
 
 
+Creates a new SDP offer to start a WebRTC connection with a remote peer. At least one :ref:`WebRTCDataChannel<class_WebRTCDataChannel>` must have been created before calling this method.
+
+If this functions returns ``OK``, :ref:`session_description_created<class_WebRTCPeerConnection_signal_session_description_created>` will be called when the session is ready to be sent.
+
 .. _class_WebRTCPeerConnection_method_get_connection_state:
 .. _class_WebRTCPeerConnection_method_get_connection_state:
 
 
 - :ref:`ConnectionState<enum_WebRTCPeerConnection_ConnectionState>` **get_connection_state** **(** **)** const
 - :ref:`ConnectionState<enum_WebRTCPeerConnection_ConnectionState>` **get_connection_state** **(** **)** const
 
 
+Returns the connection state. See :ref:`ConnectionState<enum_WebRTCPeerConnection_ConnectionState>`.
+
 .. _class_WebRTCPeerConnection_method_initialize:
 .. _class_WebRTCPeerConnection_method_initialize:
 
 
 - :ref:`Error<enum_@GlobalScope_Error>` **initialize** **(** :ref:`Dictionary<class_Dictionary>` configuration={  } **)**
 - :ref:`Error<enum_@GlobalScope_Error>` **initialize** **(** :ref:`Dictionary<class_Dictionary>` configuration={  } **)**
 
 
+Re-initialize this peer connection, closing any previously active connection, and going back to state :ref:`STATE_NEW<class_WebRTCPeerConnection_constant_STATE_NEW>`. A dictionary of ``options`` can be passed to configure the peer connection.
+
+Valid ``options`` are:
+
+::
+
+    {
+        "iceServers": [
+            {
+                "urls": [ "stun:stun.example.com:3478" ], # One or more STUN servers.
+            },
+            {
+                "urls": [ "turn:turn.example.com:3478" ], # One or more TURN servers.
+                "username": "a_username", # Optional username for the TURN server.
+                "credentials": "a_password", # Optional password for the TURN server.
+            }
+        ]
+    }
+
 .. _class_WebRTCPeerConnection_method_poll:
 .. _class_WebRTCPeerConnection_method_poll:
 
 
 - :ref:`Error<enum_@GlobalScope_Error>` **poll** **(** **)**
 - :ref:`Error<enum_@GlobalScope_Error>` **poll** **(** **)**
 
 
+Call this method frequently (e.g. in :ref:`Node._process<class_Node_method__process>` or :ref:`Node._physics_process<class_Node_method__physics_process>`) to properly receive signals.
+
 .. _class_WebRTCPeerConnection_method_set_local_description:
 .. _class_WebRTCPeerConnection_method_set_local_description:
 
 
 - :ref:`Error<enum_@GlobalScope_Error>` **set_local_description** **(** :ref:`String<class_String>` type, :ref:`String<class_String>` sdp **)**
 - :ref:`Error<enum_@GlobalScope_Error>` **set_local_description** **(** :ref:`String<class_String>` type, :ref:`String<class_String>` sdp **)**
 
 
+Sets the SDP description of the local peer. This should be called in response to :ref:`session_description_created<class_WebRTCPeerConnection_signal_session_description_created>`.
+
+If ``type`` is ``answer`` the peer will start emitting :ref:`ice_candidate_created<class_WebRTCPeerConnection_signal_ice_candidate_created>`.
+
 .. _class_WebRTCPeerConnection_method_set_remote_description:
 .. _class_WebRTCPeerConnection_method_set_remote_description:
 
 
 - :ref:`Error<enum_@GlobalScope_Error>` **set_remote_description** **(** :ref:`String<class_String>` type, :ref:`String<class_String>` sdp **)**
 - :ref:`Error<enum_@GlobalScope_Error>` **set_remote_description** **(** :ref:`String<class_String>` type, :ref:`String<class_String>` sdp **)**
 
 
+Sets the SDP description of the remote peer. This should be called with the values generated by a remote peer and received over the signaling server.
+
+If ``type`` is ``offer`` the peer will emit :ref:`session_description_created<class_WebRTCPeerConnection_signal_session_description_created>` with the appropriate answer.
+
+If ``type`` is ``answer`` the peer will start emitting :ref:`ice_candidate_created<class_WebRTCPeerConnection_signal_ice_candidate_created>`.
+