Browse Source

Sync classref with 3.2 branch

Rémi Verschelde 5 năm trước cách đây
mục cha
commit
bbc324a125
42 tập tin đã thay đổi với 476 bổ sung230 xóa
  1. 0 13
      classes/class_@c#.rst
  2. 10 0
      classes/[email protected]
  3. 0 13
      classes/[email protected]
  4. 0 18
      classes/[email protected]
  5. 10 2
      classes/class_array.rst
  6. 3 1
      classes/class_astar.rst
  7. 3 1
      classes/class_astar2d.rst
  8. 5 0
      classes/class_audioeffectrecord.rst
  9. 8 6
      classes/class_bool.rst
  10. 3 1
      classes/class_color.rst
  11. 14 0
      classes/class_csharpscript.rst
  12. 12 0
      classes/class_dictionary.rst
  13. 32 7
      classes/class_file.rst
  14. 5 1
      classes/class_filedialog.rst
  15. 23 4
      classes/class_godotsharp.rst
  16. 1 1
      classes/class_image.rst
  17. 1 1
      classes/class_joint2d.rst
  18. 1 1
      classes/class_label.rst
  19. 5 5
      classes/class_light.rst
  20. 36 16
      classes/class_lineedit.rst
  21. 1 1
      classes/class_material.rst
  22. 10 0
      classes/class_node.rst
  23. 0 32
      classes/class_node2d.rst
  24. 2 0
      classes/class_object.rst
  25. 1 1
      classes/class_omnilight.rst
  26. 61 1
      classes/class_os.rst
  27. 2 0
      classes/class_particles.rst
  28. 4 0
      classes/class_physicsmaterial.rst
  29. 122 88
      classes/class_projectsettings.rst
  30. 1 2
      classes/class_regex.rst
  31. 1 1
      classes/class_regexmatch.rst
  32. 22 2
      classes/class_richtextlabel.rst
  33. 5 3
      classes/class_rigidbody.rst
  34. 5 3
      classes/class_rigidbody2d.rst
  35. 10 0
      classes/class_shape2d.rst
  36. 1 1
      classes/class_spotlight.rst
  37. 12 4
      classes/class_string.rst
  38. 4 0
      classes/class_tileset.rst
  39. 2 0
      classes/class_vector2.rst
  40. 2 0
      classes/class_vector3.rst
  41. 2 0
      classes/class_viewportcontainer.rst
  42. 34 0
      classes/class_visualserver.rst

+ 0 - 13
classes/class_@c#.rst

@@ -1,13 +0,0 @@
-:github_url: hide
-
-.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
-.. DO NOT EDIT THIS FILE, but the @C#.xml source instead.
-.. The source is found in doc/classes or modules/<name>/doc_classes.
-
-.. _class_@C#:
-
-@C#
-===
-
-
-

+ 10 - 0
classes/[email protected]

@@ -34,6 +34,8 @@ Properties
 +---------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
 +---------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
 | :ref:`Geometry<class_Geometry>`                                           | :ref:`Geometry<class_@GlobalScope_property_Geometry>`                               |
 | :ref:`Geometry<class_Geometry>`                                           | :ref:`Geometry<class_@GlobalScope_property_Geometry>`                               |
 +---------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
 +---------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
+| :ref:`GodotSharp<class_GodotSharp>`                                       | :ref:`GodotSharp<class_@GlobalScope_property_GodotSharp>`                           |
++---------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
 | :ref:`IP<class_IP>`                                                       | :ref:`IP<class_@GlobalScope_property_IP>`                                           |
 | :ref:`IP<class_IP>`                                                       | :ref:`IP<class_@GlobalScope_property_IP>`                                           |
 +---------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
 +---------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
 | :ref:`Input<class_Input>`                                                 | :ref:`Input<class_@GlobalScope_property_Input>`                                     |
 | :ref:`Input<class_Input>`                                                 | :ref:`Input<class_@GlobalScope_property_Input>`                                     |
@@ -2257,6 +2259,14 @@ The :ref:`Geometry<class_Geometry>` singleton.
 
 
 ----
 ----
 
 
+.. _class_@GlobalScope_property_GodotSharp:
+
+- :ref:`GodotSharp<class_GodotSharp>` **GodotSharp**
+
+The :ref:`GodotSharp<class_GodotSharp>` singleton.
+
+----
+
 .. _class_@GlobalScope_property_IP:
 .. _class_@GlobalScope_property_IP:
 
 
 - :ref:`IP<class_IP>` **IP**
 - :ref:`IP<class_IP>` **IP**

+ 0 - 13
classes/[email protected]

@@ -1,13 +0,0 @@
-:github_url: hide
-
-.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
-.. DO NOT EDIT THIS FILE, but the @NativeScript.xml source instead.
-.. The source is found in doc/classes or modules/<name>/doc_classes.
-
-.. _class_@NativeScript:
-
-@NativeScript
-=============
-
-
-

+ 0 - 18
classes/[email protected]

@@ -1,18 +0,0 @@
-:github_url: hide
-
-.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
-.. DO NOT EDIT THIS FILE, but the @VisualScript.xml source instead.
-.. The source is found in doc/classes or modules/<name>/doc_classes.
-
-.. _class_@VisualScript:
-
-@VisualScript
-=============
-
-Built-in visual script functions.
-
-Description
------------
-
-A list of built-in visual script functions, see :ref:`VisualScriptBuiltinFunc<class_VisualScriptBuiltinFunc>` and :ref:`VisualScript<class_VisualScript>`.
-

+ 10 - 2
classes/class_array.rst

@@ -245,7 +245,7 @@ Removes the first occurrence of a value from the array.
 
 
 - :ref:`int<class_int>` **find** **(** :ref:`Variant<class_Variant>` what, :ref:`int<class_int>` from=0 **)**
 - :ref:`int<class_int>` **find** **(** :ref:`Variant<class_Variant>` what, :ref:`int<class_int>` from=0 **)**
 
 
-Searches the array for a value and returns its index or -1 if not found. Optionally, the initial search index can be passed.
+Searches the array for a value and returns its index or ``-1`` if not found. Optionally, the initial search index can be passed.
 
 
 ----
 ----
 
 
@@ -253,7 +253,7 @@ Searches the array for a value and returns its index or -1 if not found. Optiona
 
 
 - :ref:`int<class_int>` **find_last** **(** :ref:`Variant<class_Variant>` value **)**
 - :ref:`int<class_int>` **find_last** **(** :ref:`Variant<class_Variant>` value **)**
 
 
-Searches the array in reverse order for a value and returns its index or -1 if not found.
+Searches the array in reverse order for a value and returns its index or ``-1`` if not found.
 
 
 ----
 ----
 
 
@@ -278,6 +278,14 @@ Returns ``true`` if the array contains the given value.
     ["inside", 7].has(7) == true
     ["inside", 7].has(7) == true
     ["inside", 7].has("7") == false
     ["inside", 7].has("7") == false
 
 
+**Note:** This is equivalent to using the ``in`` operator as follows:
+
+::
+
+    # Will evaluate to `true`.
+    if 2 in [2, 4, 6, 8]:
+        pass
+
 ----
 ----
 
 
 .. _class_Array_method_hash:
 .. _class_Array_method_hash:

+ 3 - 1
classes/class_astar.rst

@@ -179,7 +179,9 @@ Returns the next available point ID with no point associated to it.
 
 
 - :ref:`int<class_int>` **get_closest_point** **(** :ref:`Vector3<class_Vector3>` to_position, :ref:`bool<class_bool>` include_disabled=false **)** const
 - :ref:`int<class_int>` **get_closest_point** **(** :ref:`Vector3<class_Vector3>` to_position, :ref:`bool<class_bool>` include_disabled=false **)** const
 
 
-Returns the ID of the closest point to ``to_position``, optionally taking disabled points into account. Returns -1 if there are no points in the points pool.
+Returns the ID of the closest point to ``to_position``, optionally taking disabled points into account. Returns ``-1`` if there are no points in the points pool.
+
+**Note:** If several points are the closest to ``to_position``, the one with the smallest ID will be returned, ensuring a deterministic result.
 
 
 ----
 ----
 
 

+ 3 - 1
classes/class_astar2d.rst

@@ -162,7 +162,9 @@ Returns the next available point ID with no point associated to it.
 
 
 - :ref:`int<class_int>` **get_closest_point** **(** :ref:`Vector2<class_Vector2>` to_position, :ref:`bool<class_bool>` include_disabled=false **)** const
 - :ref:`int<class_int>` **get_closest_point** **(** :ref:`Vector2<class_Vector2>` to_position, :ref:`bool<class_bool>` include_disabled=false **)** const
 
 
-Returns the ID of the closest point to ``to_position``, optionally taking disabled points into account. Returns -1 if there are no points in the points pool.
+Returns the ID of the closest point to ``to_position``, optionally taking disabled points into account. Returns ``-1`` if there are no points in the points pool.
+
+**Note:** If several points are the closest to ``to_position``, the one with the smallest ID will be returned, ensuring a deterministic result.
 
 
 ----
 ----
 
 

+ 5 - 0
classes/class_audioeffectrecord.rst

@@ -13,6 +13,11 @@ AudioEffectRecord
 
 
 Audio effect used for recording sound from a microphone.
 Audio effect used for recording sound from a microphone.
 
 
+Description
+-----------
+
+Allows the user to record sound from a microphone. It sets and gets the format in which the audio file will be recorded (8-bit, 16-bit, or compressed). It checks whether or not the recording is active, and if it is, records the sound. It then returns the recorded sample.
+
 Tutorials
 Tutorials
 ---------
 ---------
 
 

+ 8 - 6
classes/class_bool.rst

@@ -14,9 +14,9 @@ Boolean built-in type.
 Description
 Description
 -----------
 -----------
 
 
-Boolean is a built-in type. It can represent any data type that is either a true or false value. You can think of it as an switch with on or off (1 or 0) setting. It's often used as part of programming logic in condition statements like ``if`` statements.
+Boolean is a built-in type. There are two boolean values: ``true`` and ``false``. You can think of it as an switch with on or off (1 or 0) setting. Booleans are used in programming for logic in condition statements, like ``if`` statements.
 
 
-**Note:** In a code below ``if can_shoot`` is equivalent of ``if can_shoot == true``. It is good practice to follow the natural spoken language structure when possible. Use ``if can_shoot`` rather than ``if can_shoot == true`` and use ``if not can_shoot`` rather than ``if can_shoot == false``.
+Booleans can be directly used in ``if`` statements. The code below demonstrates this on the ``if can_shoot:`` line. You don't need to use ``== true``, you only need ``if can_shoot:``. Similarly, use ``if not can_shoot:`` rather than ``== false``.
 
 
 ::
 ::
 
 
@@ -24,7 +24,7 @@ Boolean is a built-in type. It can represent any data type that is either a true
     
     
     func shoot():
     func shoot():
         if can_shoot:
         if can_shoot:
-            # Perform shooting actions here.
+            pass # Perform shooting actions here.
 
 
 The following code will only create a bullet if both conditions are met: action "shoot" is pressed and if ``can_shoot`` is ``true``.
 The following code will only create a bullet if both conditions are met: action "shoot" is pressed and if ``can_shoot`` is ``true``.
 
 
@@ -72,17 +72,19 @@ Method Descriptions
 
 
 - :ref:`bool<class_bool>` **bool** **(** :ref:`int<class_int>` from **)**
 - :ref:`bool<class_bool>` **bool** **(** :ref:`int<class_int>` from **)**
 
 
-Cast an :ref:`int<class_int>` value to a boolean value, this method will return ``true`` if called with an integer value different to 0 and ``false`` in other case.
+Cast an :ref:`int<class_int>` value to a boolean value, this method will return ``false`` if ``0`` is passed in, and ``true`` for all other ints.
 
 
 ----
 ----
 
 
 - :ref:`bool<class_bool>` **bool** **(** :ref:`float<class_float>` from **)**
 - :ref:`bool<class_bool>` **bool** **(** :ref:`float<class_float>` from **)**
 
 
-Cast a :ref:`float<class_float>` value to a boolean value, this method will return ``true`` if called with a floating-point value different to 0 and ``false`` in other case.
+Cast a :ref:`float<class_float>` value to a boolean value, this method will return ``false`` if ``0.0`` is passed in, and ``true`` for all other floats.
 
 
 ----
 ----
 
 
 - :ref:`bool<class_bool>` **bool** **(** :ref:`String<class_String>` from **)**
 - :ref:`bool<class_bool>` **bool** **(** :ref:`String<class_String>` from **)**
 
 
-Cast a :ref:`String<class_String>` value to a boolean value, this method will return ``true`` if called with a non-empty string and ``false`` in other case. Examples: ``bool("False")`` returns ``true``, ``bool("")`` returns ``false``.
+Cast a :ref:`String<class_String>` value to a boolean value, this method will return ``false`` if ``""`` is passed in, and ``true`` for all non-empty strings.
+
+Examples: ``bool("False")`` returns ``true``, ``bool("")`` returns ``false``.
 
 

+ 3 - 1
classes/class_color.rst

@@ -16,10 +16,12 @@ Description
 
 
 A color is represented by red, green, and blue ``(r, g, b)`` components. Additionally, ``a`` represents the alpha component, often used for transparency. Values are in floating-point and usually range from 0 to 1. Some properties (such as :ref:`CanvasItem.modulate<class_CanvasItem_property_modulate>`) may accept values greater than 1.
 A color is represented by red, green, and blue ``(r, g, b)`` components. Additionally, ``a`` represents the alpha component, often used for transparency. Values are in floating-point and usually range from 0 to 1. Some properties (such as :ref:`CanvasItem.modulate<class_CanvasItem_property_modulate>`) may accept values greater than 1.
 
 
-You can also create a color from standardized color names by using :ref:`@GDScript.ColorN<class_@GDScript_method_ColorN>` or directly using the color constants defined here. The standardized color set is based on the `X11 color names <https://en.wikipedia.org/wiki/X11_color_names>`_. 
+You can also create a color from standardized color names by using :ref:`@GDScript.ColorN<class_@GDScript_method_ColorN>` or directly using the color constants defined here. The standardized color set is based on the `X11 color names <https://en.wikipedia.org/wiki/X11_color_names>`_.
 
 
 If you want to supply values in a range of 0 to 255, you should use :ref:`@GDScript.Color8<class_@GDScript_method_Color8>`.
 If you want to supply values in a range of 0 to 255, you should use :ref:`@GDScript.Color8<class_@GDScript_method_Color8>`.
 
 
+**Note:** In a boolean context, a Color will evaluate to ``false`` if it's equal to ``Color(0, 0, 0, 1)`` (opaque black). Otherwise, a Color will always evaluate to ``true``.
+
 Properties
 Properties
 ----------
 ----------
 
 

+ 14 - 0
classes/class_csharpscript.rst

@@ -11,7 +11,19 @@ CSharpScript
 
 
 **Inherits:** :ref:`Script<class_Script>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
 **Inherits:** :ref:`Script<class_Script>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
 
 
+A script implemented in the C# programming language (Mono-enabled builds only).
 
 
+Description
+-----------
+
+This class represents a C# script. It is the C# equivalent of the :ref:`GDScript<class_GDScript>` class and is only available in Mono-enabled Godot builds.
+
+See also :ref:`GodotSharp<class_GodotSharp>`.
+
+Tutorials
+---------
+
+- :doc:`../getting_started/scripting/c_sharp/index`
 
 
 Methods
 Methods
 -------
 -------
@@ -27,3 +39,5 @@ Method Descriptions
 
 
 - :ref:`Object<class_Object>` **new** **(** ... **)** vararg
 - :ref:`Object<class_Object>` **new** **(** ... **)** vararg
 
 
+Returns a new instance of the script.
+

+ 12 - 0
classes/class_dictionary.rst

@@ -181,6 +181,16 @@ Returns the current value for the specified key in the ``Dictionary``. If the ke
 
 
 Returns ``true`` if the dictionary has a given key.
 Returns ``true`` if the dictionary has a given key.
 
 
+**Note:** This is equivalent to using the ``in`` operator as follows:
+
+::
+
+    # Will evaluate to `true`.
+    if "godot" in {"godot": "engine"}:
+        pass
+
+This method (like the ``in`` operator) will evaluate to ``true`` as long as the key exists, even if the associated value is ``null``.
+
 ----
 ----
 
 
 .. _class_Dictionary_method_has_all:
 .. _class_Dictionary_method_has_all:
@@ -204,6 +214,8 @@ Returns a hashed integer value representing the dictionary contents. This can be
     # The line below prints `true`, whereas it would have printed `false` if both variables were compared directly.
     # The line below prints `true`, whereas it would have printed `false` if both variables were compared directly.
     print(dict1.hash() == dict2.hash())
     print(dict1.hash() == dict2.hash())
 
 
+**Note:** Dictionaries with the same keys/values but in a different order will have a different hash.
+
 ----
 ----
 
 
 .. _class_Dictionary_method_keys:
 .. _class_Dictionary_method_keys:

+ 32 - 7
classes/class_file.rst

@@ -239,7 +239,7 @@ Returns ``true`` if the file exists in the given path.
 
 
 - :ref:`int<class_int>` **get_16** **(** **)** const
 - :ref:`int<class_int>` **get_16** **(** **)** const
 
 
-Returns the next 16 bits from the file as an integer.
+Returns the next 16 bits from the file as an integer. See :ref:`store_16<class_File_method_store_16>` for details on what values can be stored and retrieved this way.
 
 
 ----
 ----
 
 
@@ -247,7 +247,7 @@ Returns the next 16 bits from the file as an integer.
 
 
 - :ref:`int<class_int>` **get_32** **(** **)** const
 - :ref:`int<class_int>` **get_32** **(** **)** const
 
 
-Returns the next 32 bits from the file as an integer.
+Returns the next 32 bits from the file as an integer. See :ref:`store_32<class_File_method_store_32>` for details on what values can be stored and retrieved this way.
 
 
 ----
 ----
 
 
@@ -255,7 +255,7 @@ Returns the next 32 bits from the file as an integer.
 
 
 - :ref:`int<class_int>` **get_64** **(** **)** const
 - :ref:`int<class_int>` **get_64** **(** **)** const
 
 
-Returns the next 64 bits from the file as an integer.
+Returns the next 64 bits from the file as an integer. See :ref:`store_64<class_File_method_store_64>` for details on what values can be stored and retrieved this way.
 
 
 ----
 ----
 
 
@@ -263,7 +263,7 @@ Returns the next 64 bits from the file as an integer.
 
 
 - :ref:`int<class_int>` **get_8** **(** **)** const
 - :ref:`int<class_int>` **get_8** **(** **)** const
 
 
-Returns the next 8 bits from the file as an integer.
+Returns the next 8 bits from the file as an integer. See :ref:`store_8<class_File_method_store_8>` for details on what values can be stored and retrieved this way.
 
 
 ----
 ----
 
 
@@ -477,7 +477,28 @@ Changes the file reading/writing cursor to the specified position (in bytes from
 
 
 Stores an integer as 16 bits in the file.
 Stores an integer as 16 bits in the file.
 
 
-**Note:** The ``value`` should lie in the interval ``[0, 2^16 - 1]``.
+**Note:** The ``value`` should lie in the interval ``[0, 2^16 - 1]``. Any other value will overflow and wrap around.
+
+To store a signed integer, use :ref:`store_64<class_File_method_store_64>` or store a signed integer from the interval ``[-2^15, 2^15 - 1]`` (i.e. keeping one bit for the signedness) and compute its sign manually when reading. For example:
+
+::
+
+    const MAX_15B = 1 << 15
+    const MAX_16B = 1 << 16
+    
+    func unsigned16_to_signed(unsigned):
+        return (unsigned + MAX_15B) % MAX_16B - MAX_15B
+    
+    func _ready():
+        var f = File.new()
+        f.open("user://file.dat", File.WRITE_READ)
+        f.store_16(-42) # This wraps around and stores 65494 (2^16 - 42).
+        f.store_16(121) # In bounds, will store 121.
+        f.seek(0) # Go back to start to read the stored value.
+        var read1 = f.get_16() # 65494
+        var read2 = f.get_16() # 121
+        var converted1 = unsigned16_to_signed(read1) # -42
+        var converted2 = unsigned16_to_signed(read2) # 121
 
 
 ----
 ----
 
 
@@ -487,7 +508,9 @@ Stores an integer as 16 bits in the file.
 
 
 Stores an integer as 32 bits in the file.
 Stores an integer as 32 bits in the file.
 
 
-**Note:** The ``value`` should lie in the interval ``[0, 2^32 - 1]``.
+**Note:** The ``value`` should lie in the interval ``[0, 2^32 - 1]``. Any other value will overflow and wrap around.
+
+To store a signed integer, use :ref:`store_64<class_File_method_store_64>`, or convert it manually (see :ref:`store_16<class_File_method_store_16>` for an example).
 
 
 ----
 ----
 
 
@@ -507,7 +530,9 @@ Stores an integer as 64 bits in the file.
 
 
 Stores an integer as 8 bits in the file.
 Stores an integer as 8 bits in the file.
 
 
-**Note:** The ``value`` should lie in the interval ``[0, 255]``.
+**Note:** The ``value`` should lie in the interval ``[0, 255]``. Any other value will overflow and wrap around.
+
+To store a signed integer, use :ref:`store_64<class_File_method_store_64>`, or convert it manually (see :ref:`store_16<class_File_method_store_16>` for an example).
 
 
 ----
 ----
 
 

+ 5 - 1
classes/class_filedialog.rst

@@ -16,7 +16,7 @@ Dialog for selecting files or directories in the filesystem.
 Description
 Description
 -----------
 -----------
 
 
-FileDialog is a preset dialog used to choose files and directories in the filesystem. It supports filter masks.
+FileDialog is a preset dialog used to choose files and directories in the filesystem. It supports filter masks. The FileDialog automatically sets its window title according to the :ref:`mode<class_FileDialog_property_mode>`. If you want to use a custom title, disable this by setting :ref:`mode_overrides_title<class_FileDialog_property_mode_overrides_title>` to ``false``.
 
 
 Properties
 Properties
 ----------
 ----------
@@ -63,6 +63,10 @@ Methods
 Theme Properties
 Theme Properties
 ----------------
 ----------------
 
 
++-------------------------------+----------------------+-----------------------+
+| :ref:`Texture<class_Texture>` | file                 |                       |
++-------------------------------+----------------------+-----------------------+
+| :ref:`Color<class_Color>`     | file_icon_modulate   | Color( 1, 1, 1, 1 )   |
 +-------------------------------+----------------------+-----------------------+
 +-------------------------------+----------------------+-----------------------+
 | :ref:`Color<class_Color>`     | files_disabled       | Color( 0, 0, 0, 0.7 ) |
 | :ref:`Color<class_Color>`     | files_disabled       | Color( 0, 0, 0, 0.7 ) |
 +-------------------------------+----------------------+-----------------------+
 +-------------------------------+----------------------+-----------------------+

+ 23 - 4
classes/class_godotsharp.rst

@@ -11,7 +11,14 @@ GodotSharp
 
 
 **Inherits:** :ref:`Object<class_Object>`
 **Inherits:** :ref:`Object<class_Object>`
 
 
+Bridge between Godot and the Mono runtime (Mono-enabled builds only).
 
 
+Description
+-----------
+
+This class is a bridge between Godot and the Mono runtime. It exposes several low-level operations and is only available in Mono-enabled Godot builds.
+
+See also :ref:`CSharpScript<class_CSharpScript>`.
 
 
 Methods
 Methods
 -------
 -------
@@ -41,7 +48,7 @@ Method Descriptions
 
 
 - void **attach_thread** **(** **)**
 - void **attach_thread** **(** **)**
 
 
-Attaches the current thread to the mono runtime.
+Attaches the current thread to the Mono runtime.
 
 
 ----
 ----
 
 
@@ -49,7 +56,7 @@ Attaches the current thread to the mono runtime.
 
 
 - void **detach_thread** **(** **)**
 - void **detach_thread** **(** **)**
 
 
-Detaches the current thread from the mono runtime.
+Detaches the current thread from the Mono runtime.
 
 
 ----
 ----
 
 
@@ -57,19 +64,27 @@ Detaches the current thread from the mono runtime.
 
 
 - :ref:`int<class_int>` **get_domain_id** **(** **)**
 - :ref:`int<class_int>` **get_domain_id** **(** **)**
 
 
+Returns the current MonoDomain ID.
+
+**Note:** The Mono runtime must be initialized for this method to work (use :ref:`is_runtime_initialized<class_GodotSharp_method_is_runtime_initialized>` to check). If the Mono runtime isn't initialized at the time this method is called, the engine will crash.
+
 ----
 ----
 
 
 .. _class_GodotSharp_method_get_scripts_domain_id:
 .. _class_GodotSharp_method_get_scripts_domain_id:
 
 
 - :ref:`int<class_int>` **get_scripts_domain_id** **(** **)**
 - :ref:`int<class_int>` **get_scripts_domain_id** **(** **)**
 
 
+Returns the scripts MonoDomain's ID. This will be the same MonoDomain ID as :ref:`get_domain_id<class_GodotSharp_method_get_domain_id>`, unless the scripts domain isn't loaded.
+
+**Note:** The Mono runtime must be initialized for this method to work (use :ref:`is_runtime_initialized<class_GodotSharp_method_is_runtime_initialized>` to check). If the Mono runtime isn't initialized at the time this method is called, the engine will crash.
+
 ----
 ----
 
 
 .. _class_GodotSharp_method_is_domain_finalizing_for_unload:
 .. _class_GodotSharp_method_is_domain_finalizing_for_unload:
 
 
 - :ref:`bool<class_bool>` **is_domain_finalizing_for_unload** **(** :ref:`int<class_int>` domain_id **)**
 - :ref:`bool<class_bool>` **is_domain_finalizing_for_unload** **(** :ref:`int<class_int>` domain_id **)**
 
 
-Returns whether the domain is being finalized.
+Returns ``true`` if the domain is being finalized, ``false`` otherwise.
 
 
 ----
 ----
 
 
@@ -77,17 +92,21 @@ Returns whether the domain is being finalized.
 
 
 - :ref:`bool<class_bool>` **is_runtime_initialized** **(** **)**
 - :ref:`bool<class_bool>` **is_runtime_initialized** **(** **)**
 
 
+Returns ``true`` if the Mono runtime is initialized, ``false`` otherwise.
+
 ----
 ----
 
 
 .. _class_GodotSharp_method_is_runtime_shutting_down:
 .. _class_GodotSharp_method_is_runtime_shutting_down:
 
 
 - :ref:`bool<class_bool>` **is_runtime_shutting_down** **(** **)**
 - :ref:`bool<class_bool>` **is_runtime_shutting_down** **(** **)**
 
 
+Returns ``true`` if the Mono runtime is shutting down, ``false`` otherwise.
+
 ----
 ----
 
 
 .. _class_GodotSharp_method_is_scripts_domain_loaded:
 .. _class_GodotSharp_method_is_scripts_domain_loaded:
 
 
 - :ref:`bool<class_bool>` **is_scripts_domain_loaded** **(** **)**
 - :ref:`bool<class_bool>` **is_scripts_domain_loaded** **(** **)**
 
 
-Returns whether the scripts domain is loaded.
+Returns ``true`` if the scripts domain is loaded, ``false`` otherwise.
 
 

+ 1 - 1
classes/class_image.rst

@@ -522,7 +522,7 @@ Creates an empty image of given size and format. See :ref:`Format<enum_Image_For
 
 
 - void **create_from_data** **(** :ref:`int<class_int>` width, :ref:`int<class_int>` height, :ref:`bool<class_bool>` use_mipmaps, :ref:`Format<enum_Image_Format>` format, :ref:`PoolByteArray<class_PoolByteArray>` data **)**
 - void **create_from_data** **(** :ref:`int<class_int>` width, :ref:`int<class_int>` height, :ref:`bool<class_bool>` use_mipmaps, :ref:`Format<enum_Image_Format>` format, :ref:`PoolByteArray<class_PoolByteArray>` data **)**
 
 
-Creates a new image of given size and format. See :ref:`Format<enum_Image_Format>` constants. Fills the image with the given raw data. If ``use_mipmaps`` is ``true`` then generate mipmaps for this image. See the :ref:`generate_mipmaps<class_Image_method_generate_mipmaps>`.
+Creates a new image of given size and format. See :ref:`Format<enum_Image_Format>` constants. Fills the image with the given raw data. If ``use_mipmaps`` is ``true`` then loads mipmaps for this image from ``data``. See :ref:`generate_mipmaps<class_Image_method_generate_mipmaps>`.
 
 
 ----
 ----
 
 

+ 1 - 1
classes/class_joint2d.rst

@@ -64,7 +64,7 @@ When :ref:`node_a<class_Joint2D_property_node_a>` and :ref:`node_b<class_Joint2D
 | *Getter*  | get_exclude_nodes_from_collision()      |
 | *Getter*  | get_exclude_nodes_from_collision()      |
 +-----------+-----------------------------------------+
 +-----------+-----------------------------------------+
 
 
-If ``true``, :ref:`node_a<class_Joint2D_property_node_a>` and :ref:`node_b<class_Joint2D_property_node_b>` can collide.
+If ``true``, :ref:`node_a<class_Joint2D_property_node_a>` and :ref:`node_b<class_Joint2D_property_node_b>` can not collide.
 
 
 ----
 ----
 
 

+ 1 - 1
classes/class_label.rst

@@ -225,7 +225,7 @@ Limits the lines of text the node shows on screen.
 | *Getter*  | get_percent_visible()      |
 | *Getter*  | get_percent_visible()      |
 +-----------+----------------------------+
 +-----------+----------------------------+
 
 
-Limits the count of visible characters. If you set ``percent_visible`` to 50, only up to half of the text's characters will display on screen. Useful to animate the text in a dialog box.
+Limits the amount of visible characters. If you set ``percent_visible`` to 0.5, only up to half of the text's characters will display on screen. Useful to animate the text in a dialog box.
 
 
 ----
 ----
 
 

+ 5 - 5
classes/class_light.rst

@@ -18,7 +18,7 @@ Provides a base class for different kinds of light nodes.
 Description
 Description
 -----------
 -----------
 
 
-Light is the abstract base class for light nodes, so it shouldn't be used directly (it can't be instanced). Other types of light nodes inherit from it. Light contains the common variables and parameters used for lighting.
+Light is the *abstract* base class for light nodes. As it can't be instanced, it shouldn't be used directly. Other types of light nodes inherit from it. Light contains the common variables and parameters used for lighting.
 
 
 Tutorials
 Tutorials
 ---------
 ---------
@@ -205,7 +205,7 @@ The light's bake mode. See :ref:`BakeMode<enum_Light_BakeMode>`.
 | *Getter*  | get_color()             |
 | *Getter*  | get_color()             |
 +-----------+-------------------------+
 +-----------+-------------------------+
 
 
-The light's color.
+The light's color. An *overbright* color can be used to achieve a result equivalent to increasing the light's :ref:`light_energy<class_Light_property_light_energy>`.
 
 
 ----
 ----
 
 
@@ -237,7 +237,7 @@ The light will affect objects in the selected layers.
 | *Getter*  | get_param()      |
 | *Getter*  | get_param()      |
 +-----------+------------------+
 +-----------+------------------+
 
 
-The light's strength multiplier.
+The light's strength multiplier (this is not a physical unit). For :ref:`OmniLight<class_OmniLight>` and :ref:`SpotLight<class_SpotLight>`, changing this value will only change the light color's intensity, not the light's radius.
 
 
 ----
 ----
 
 
@@ -285,7 +285,7 @@ If ``true``, the light's effect is reversed, darkening areas and casting bright
 | *Getter*  | get_param()      |
 | *Getter*  | get_param()      |
 +-----------+------------------+
 +-----------+------------------+
 
 
-The intensity of the specular blob in objects affected by the light. At ``0`` the light becomes a pure diffuse light.
+The intensity of the specular blob in objects affected by the light. At ``0``, the light becomes a pure diffuse light. When not baking emission, this can be used to avoid unrealistic reflections when placing lights above an emissive surface.
 
 
 ----
 ----
 
 
@@ -301,7 +301,7 @@ The intensity of the specular blob in objects affected by the light. At ``0`` th
 | *Getter*  | get_param()      |
 | *Getter*  | get_param()      |
 +-----------+------------------+
 +-----------+------------------+
 
 
-Used to adjust shadow appearance. Too small a value results in self-shadowing, while too large a value causes shadows to separate from casters. Adjust as needed.
+Used to adjust shadow appearance. Too small a value results in self-shadowing ("shadow acne"), while too large a value causes shadows to separate from casters ("peter-panning"). Adjust as needed.
 
 
 ----
 ----
 
 

+ 36 - 16
classes/class_lineedit.rst

@@ -102,21 +102,25 @@ Properties
 Methods
 Methods
 -------
 -------
 
 
-+-----------------------------------+-------------------------------------------------------------------------------------------------------------------+
-| void                              | :ref:`append_at_cursor<class_LineEdit_method_append_at_cursor>` **(** :ref:`String<class_String>` text **)**      |
-+-----------------------------------+-------------------------------------------------------------------------------------------------------------------+
-| void                              | :ref:`clear<class_LineEdit_method_clear>` **(** **)**                                                             |
-+-----------------------------------+-------------------------------------------------------------------------------------------------------------------+
-| void                              | :ref:`deselect<class_LineEdit_method_deselect>` **(** **)**                                                       |
-+-----------------------------------+-------------------------------------------------------------------------------------------------------------------+
-| :ref:`PopupMenu<class_PopupMenu>` | :ref:`get_menu<class_LineEdit_method_get_menu>` **(** **)** const                                                 |
-+-----------------------------------+-------------------------------------------------------------------------------------------------------------------+
-| void                              | :ref:`menu_option<class_LineEdit_method_menu_option>` **(** :ref:`int<class_int>` option **)**                    |
-+-----------------------------------+-------------------------------------------------------------------------------------------------------------------+
-| void                              | :ref:`select<class_LineEdit_method_select>` **(** :ref:`int<class_int>` from=0, :ref:`int<class_int>` to=-1 **)** |
-+-----------------------------------+-------------------------------------------------------------------------------------------------------------------+
-| void                              | :ref:`select_all<class_LineEdit_method_select_all>` **(** **)**                                                   |
-+-----------------------------------+-------------------------------------------------------------------------------------------------------------------+
++-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
+| void                              | :ref:`append_at_cursor<class_LineEdit_method_append_at_cursor>` **(** :ref:`String<class_String>` text **)**                         |
++-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
+| void                              | :ref:`clear<class_LineEdit_method_clear>` **(** **)**                                                                                |
++-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
+| void                              | :ref:`delete_char_at_cursor<class_LineEdit_method_delete_char_at_cursor>` **(** **)**                                                |
++-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
+| void                              | :ref:`delete_text<class_LineEdit_method_delete_text>` **(** :ref:`int<class_int>` from_column, :ref:`int<class_int>` to_column **)** |
++-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
+| void                              | :ref:`deselect<class_LineEdit_method_deselect>` **(** **)**                                                                          |
++-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PopupMenu<class_PopupMenu>` | :ref:`get_menu<class_LineEdit_method_get_menu>` **(** **)** const                                                                    |
++-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
+| void                              | :ref:`menu_option<class_LineEdit_method_menu_option>` **(** :ref:`int<class_int>` option **)**                                       |
++-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
+| void                              | :ref:`select<class_LineEdit_method_select>` **(** :ref:`int<class_int>` from=0, :ref:`int<class_int>` to=-1 **)**                    |
++-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
+| void                              | :ref:`select_all<class_LineEdit_method_select_all>` **(** **)**                                                                      |
++-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
 
 
 Theme Properties
 Theme Properties
 ----------------
 ----------------
@@ -525,7 +529,23 @@ Adds ``text`` after the cursor. If the resulting value is longer than :ref:`max_
 
 
 - void **clear** **(** **)**
 - void **clear** **(** **)**
 
 
-Erases the ``LineEdit`` text.
+Erases the ``LineEdit``'s :ref:`text<class_LineEdit_property_text>`.
+
+----
+
+.. _class_LineEdit_method_delete_char_at_cursor:
+
+- void **delete_char_at_cursor** **(** **)**
+
+Deletes one character at the cursor's current position (equivalent to pressing the ``Delete`` key).
+
+----
+
+.. _class_LineEdit_method_delete_text:
+
+- void **delete_text** **(** :ref:`int<class_int>` from_column, :ref:`int<class_int>` to_column **)**
+
+Deletes a section of the :ref:`text<class_LineEdit_property_text>` going from position ``from_column`` to ``to_column``. Both parameters should be within the text's length.
 
 
 ----
 ----
 
 

+ 1 - 1
classes/class_material.rst

@@ -73,5 +73,5 @@ Sets the ``Material`` to be used for the next pass. This renders the object agai
 
 
 Sets the render priority for transparent objects in 3D scenes. Higher priority objects will be sorted in front of lower priority objects.
 Sets the render priority for transparent objects in 3D scenes. Higher priority objects will be sorted in front of lower priority objects.
 
 
-**Note:** this only applies to sorting of transparent objects. This will not impact how transparent objects are sorted relative to opaque objects. This is because opaque objects are sorted based on depth, while transparent objects are sorted from back to front (subject to priority).
+**Note:** this only applies to sorting of transparent objects. This will not impact how transparent objects are sorted relative to opaque objects. This is because opaque objects are not sorted, while transparent objects are sorted from back to front (subject to priority).
 
 

+ 10 - 0
classes/class_node.rst

@@ -618,6 +618,8 @@ To consume the input event and stop it propagating further to other nodes, :ref:
 
 
 For gameplay input, :ref:`_unhandled_input<class_Node_method__unhandled_input>` and :ref:`_unhandled_key_input<class_Node_method__unhandled_key_input>` are usually a better fit as they allow the GUI to intercept the events first.
 For gameplay input, :ref:`_unhandled_input<class_Node_method__unhandled_input>` and :ref:`_unhandled_key_input<class_Node_method__unhandled_key_input>` are usually a better fit as they allow the GUI to intercept the events first.
 
 
+**Note:** This method is only called if the node is present in the scene tree (i.e. if it's not orphan).
+
 ----
 ----
 
 
 .. _class_Node_method__physics_process:
 .. _class_Node_method__physics_process:
@@ -630,6 +632,8 @@ It is only called if physics processing is enabled, which is done automatically
 
 
 Corresponds to the :ref:`NOTIFICATION_PHYSICS_PROCESS<class_Node_constant_NOTIFICATION_PHYSICS_PROCESS>` notification in :ref:`Object._notification<class_Object_method__notification>`.
 Corresponds to the :ref:`NOTIFICATION_PHYSICS_PROCESS<class_Node_constant_NOTIFICATION_PHYSICS_PROCESS>` notification in :ref:`Object._notification<class_Object_method__notification>`.
 
 
+**Note:** This method is only called if the node is present in the scene tree (i.e. if it's not orphan).
+
 ----
 ----
 
 
 .. _class_Node_method__process:
 .. _class_Node_method__process:
@@ -642,6 +646,8 @@ It is only called if processing is enabled, which is done automatically if this
 
 
 Corresponds to the :ref:`NOTIFICATION_PROCESS<class_Node_constant_NOTIFICATION_PROCESS>` notification in :ref:`Object._notification<class_Object_method__notification>`.
 Corresponds to the :ref:`NOTIFICATION_PROCESS<class_Node_constant_NOTIFICATION_PROCESS>` notification in :ref:`Object._notification<class_Object_method__notification>`.
 
 
+**Note:** This method is only called if the node is present in the scene tree (i.e. if it's not orphan).
+
 ----
 ----
 
 
 .. _class_Node_method__ready:
 .. _class_Node_method__ready:
@@ -670,6 +676,8 @@ To consume the input event and stop it propagating further to other nodes, :ref:
 
 
 For gameplay input, this and :ref:`_unhandled_key_input<class_Node_method__unhandled_key_input>` are usually a better fit than :ref:`_input<class_Node_method__input>` as they allow the GUI to intercept the events first.
 For gameplay input, this and :ref:`_unhandled_key_input<class_Node_method__unhandled_key_input>` are usually a better fit than :ref:`_input<class_Node_method__input>` as they allow the GUI to intercept the events first.
 
 
+**Note:** This method is only called if the node is present in the scene tree (i.e. if it's not orphan).
+
 ----
 ----
 
 
 .. _class_Node_method__unhandled_key_input:
 .. _class_Node_method__unhandled_key_input:
@@ -684,6 +692,8 @@ To consume the input event and stop it propagating further to other nodes, :ref:
 
 
 For gameplay input, this and :ref:`_unhandled_input<class_Node_method__unhandled_input>` are usually a better fit than :ref:`_input<class_Node_method__input>` as they allow the GUI to intercept the events first.
 For gameplay input, this and :ref:`_unhandled_input<class_Node_method__unhandled_input>` are usually a better fit than :ref:`_input<class_Node_method__input>` as they allow the GUI to intercept the events first.
 
 
+**Note:** This method is only called if the node is present in the scene tree (i.e. if it's not orphan).
+
 ----
 ----
 
 
 .. _class_Node_method_add_child:
 .. _class_Node_method_add_child:

+ 0 - 32
classes/class_node2d.rst

@@ -47,10 +47,6 @@ Properties
 +---------------------------------------+-------------------------------------------------------------------------------+---------------------+
 +---------------------------------------+-------------------------------------------------------------------------------+---------------------+
 | :ref:`Vector2<class_Vector2>`         | :ref:`scale<class_Node2D_property_scale>`                                     | ``Vector2( 1, 1 )`` |
 | :ref:`Vector2<class_Vector2>`         | :ref:`scale<class_Node2D_property_scale>`                                     | ``Vector2( 1, 1 )`` |
 +---------------------------------------+-------------------------------------------------------------------------------+---------------------+
 +---------------------------------------+-------------------------------------------------------------------------------+---------------------+
-| :ref:`float<class_float>`             | :ref:`skew<class_Node2D_property_skew>`                                       | ``0.0``             |
-+---------------------------------------+-------------------------------------------------------------------------------+---------------------+
-| :ref:`float<class_float>`             | :ref:`skew_degrees<class_Node2D_property_skew_degrees>`                       | ``0.0``             |
-+---------------------------------------+-------------------------------------------------------------------------------+---------------------+
 | :ref:`Transform2D<class_Transform2D>` | :ref:`transform<class_Node2D_property_transform>`                             |                     |
 | :ref:`Transform2D<class_Transform2D>` | :ref:`transform<class_Node2D_property_transform>`                             |                     |
 +---------------------------------------+-------------------------------------------------------------------------------+---------------------+
 +---------------------------------------+-------------------------------------------------------------------------------+---------------------+
 | :ref:`bool<class_bool>`               | :ref:`z_as_relative<class_Node2D_property_z_as_relative>`                     | ``true``            |
 | :ref:`bool<class_bool>`               | :ref:`z_as_relative<class_Node2D_property_z_as_relative>`                     | ``true``            |
@@ -222,34 +218,6 @@ The node's scale. Unscaled value: ``(1, 1)``.
 
 
 ----
 ----
 
 
-.. _class_Node2D_property_skew:
-
-- :ref:`float<class_float>` **skew**
-
-+-----------+-----------------+
-| *Default* | ``0.0``         |
-+-----------+-----------------+
-| *Setter*  | set_skew(value) |
-+-----------+-----------------+
-| *Getter*  | get_skew()      |
-+-----------+-----------------+
-
-----
-
-.. _class_Node2D_property_skew_degrees:
-
-- :ref:`float<class_float>` **skew_degrees**
-
-+-----------+-------------------------+
-| *Default* | ``0.0``                 |
-+-----------+-------------------------+
-| *Setter*  | set_skew_degrees(value) |
-+-----------+-------------------------+
-| *Getter*  | get_skew_degrees()      |
-+-----------+-------------------------+
-
-----
-
 .. _class_Node2D_property_transform:
 .. _class_Node2D_property_transform:
 
 
 - :ref:`Transform2D<class_Transform2D>` **transform**
 - :ref:`Transform2D<class_Transform2D>` **transform**

+ 2 - 0
classes/class_object.rst

@@ -34,6 +34,8 @@ Property membership can be tested directly in GDScript using ``in``:
     print("position" in n) # Prints "True".
     print("position" in n) # Prints "True".
     print("other_property" in n) # Prints "False".
     print("other_property" in n) # Prints "False".
 
 
+The ``in`` operator will evaluate to ``true`` as long as the key exists, even if the value is ``null``.
+
 Objects also receive notifications. Notifications are a simple way to notify the object about different events, so they can all be handled together. See :ref:`_notification<class_Object_method__notification>`.
 Objects also receive notifications. Notifications are a simple way to notify the object about different events, so they can all be handled together. See :ref:`_notification<class_Object_method__notification>`.
 
 
 Methods
 Methods

+ 1 - 1
classes/class_omnilight.rst

@@ -96,7 +96,7 @@ The light's attenuation (drop-off) curve. A number of presets are available in t
 | *Getter*  | get_param()      |
 | *Getter*  | get_param()      |
 +-----------+------------------+
 +-----------+------------------+
 
 
-The light's radius.
+The light's radius. Note that the effectively lit area may appear to be smaller depending on the :ref:`omni_attenuation<class_OmniLight_property_omni_attenuation>` in use. No matter the :ref:`omni_attenuation<class_OmniLight_property_omni_attenuation>` in use, the light will never reach anything outside this radius.
 
 
 ----
 ----
 
 

+ 61 - 1
classes/class_os.rst

@@ -219,6 +219,16 @@ Methods
 +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                       | :ref:`is_window_focused<class_OS_method_is_window_focused>` **(** **)** const                                                                                                                                                                                          |
 | :ref:`bool<class_bool>`                       | :ref:`is_window_focused<class_OS_method_is_window_focused>` **(** **)** const                                                                                                                                                                                          |
 +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                         | :ref:`keyboard_get_current_layout<class_OS_method_keyboard_get_current_layout>` **(** **)** const                                                                                                                                                                      |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                         | :ref:`keyboard_get_layout_count<class_OS_method_keyboard_get_layout_count>` **(** **)** const                                                                                                                                                                          |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`keyboard_get_layout_language<class_OS_method_keyboard_get_layout_language>` **(** :ref:`int<class_int>` index **)** const                                                                                                                                        |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`keyboard_get_layout_name<class_OS_method_keyboard_get_layout_name>` **(** :ref:`int<class_int>` index **)** const                                                                                                                                                |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`keyboard_set_current_layout<class_OS_method_keyboard_set_current_layout>` **(** :ref:`int<class_int>` index **)**                                                                                                                                                |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Error<enum_@GlobalScope_Error>`         | :ref:`kill<class_OS_method_kill>` **(** :ref:`int<class_int>` pid **)**                                                                                                                                                                                                |
 | :ref:`Error<enum_@GlobalScope_Error>`         | :ref:`kill<class_OS_method_kill>` **(** :ref:`int<class_int>` pid **)**                                                                                                                                                                                                |
 +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                          | :ref:`move_window_to_foreground<class_OS_method_move_window_to_foreground>` **(** **)**                                                                                                                                                                                |
 | void                                          | :ref:`move_window_to_foreground<class_OS_method_move_window_to_foreground>` **(** **)**                                                                                                                                                                                |
@@ -1098,7 +1108,7 @@ Returns the model name of the current device.
 
 
 - :ref:`String<class_String>` **get_name** **(** **)** const
 - :ref:`String<class_String>` **get_name** **(** **)** const
 
 
-Returns the name of the host OS. Possible values are: ``"Android"``, ``"Haiku"``, ``"iOS"``, ``"HTML5"``, ``"OSX"``, ``"Server"``, ``"Windows"``, ``"UWP"``, ``"X11"``.
+Returns the name of the host OS. Possible values are: ``"Android"``, ``"iOS"``, ``"HTML5"``, ``"OSX"``, ``"Server"``, ``"Windows"``, ``"UWP"``, ``"X11"``.
 
 
 ----
 ----
 
 
@@ -1537,6 +1547,56 @@ Returns ``true`` if the window is currently focused.
 
 
 ----
 ----
 
 
+.. _class_OS_method_keyboard_get_current_layout:
+
+- :ref:`int<class_int>` **keyboard_get_current_layout** **(** **)** const
+
+Returns active keyboard layout index.
+
+**Note:** This method is implemented on Linux, macOS and Windows.
+
+----
+
+.. _class_OS_method_keyboard_get_layout_count:
+
+- :ref:`int<class_int>` **keyboard_get_layout_count** **(** **)** const
+
+Returns the number of keyboard layouts.
+
+**Note:** This method is implemented on Linux, macOS and Windows.
+
+----
+
+.. _class_OS_method_keyboard_get_layout_language:
+
+- :ref:`String<class_String>` **keyboard_get_layout_language** **(** :ref:`int<class_int>` index **)** const
+
+Returns the ISO-639/BCP-47 language code of the keyboard layout at position ``index``.
+
+**Note:** This method is implemented on Linux, macOS and Windows.
+
+----
+
+.. _class_OS_method_keyboard_get_layout_name:
+
+- :ref:`String<class_String>` **keyboard_get_layout_name** **(** :ref:`int<class_int>` index **)** const
+
+Returns the localized name of the keyboard layout at position ``index``.
+
+**Note:** This method is implemented on Linux, macOS and Windows.
+
+----
+
+.. _class_OS_method_keyboard_set_current_layout:
+
+- void **keyboard_set_current_layout** **(** :ref:`int<class_int>` index **)**
+
+Sets active keyboard layout.
+
+**Note:** This method is implemented on Linux, macOS and Windows.
+
+----
+
 .. _class_OS_method_kill:
 .. _class_OS_method_kill:
 
 
 - :ref:`Error<enum_@GlobalScope_Error>` **kill** **(** :ref:`int<class_int>` pid **)**
 - :ref:`Error<enum_@GlobalScope_Error>` **kill** **(** :ref:`int<class_int>` pid **)**

+ 2 - 0
classes/class_particles.rst

@@ -402,6 +402,8 @@ Speed scaling ratio. A value of ``0`` can be used to pause the particles.
 
 
 The :ref:`AABB<class_AABB>` that determines the area of the world part of which needs to be visible on screen for the particle system to be active.
 The :ref:`AABB<class_AABB>` that determines the area of the world part of which needs to be visible on screen for the particle system to be active.
 
 
+**Note:** If the :ref:`ParticlesMaterial<class_ParticlesMaterial>` in use is configured to cast shadows, you may want to enlarge this AABB to ensure the shadow is updated when particles are off-screen.
+
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
 
 

+ 4 - 0
classes/class_physicsmaterial.rst

@@ -46,6 +46,8 @@ Property Descriptions
 | *Getter*  | is_absorbent()       |
 | *Getter*  | is_absorbent()       |
 +-----------+----------------------+
 +-----------+----------------------+
 
 
+If ``true``, subtracts the bounciness from the colliding object's bounciness instead of adding it.
+
 ----
 ----
 
 
 .. _class_PhysicsMaterial_property_bounce:
 .. _class_PhysicsMaterial_property_bounce:
@@ -92,3 +94,5 @@ The body's friction. Values range from ``0`` (frictionless) to ``1`` (maximum fr
 | *Getter*  | is_rough()       |
 | *Getter*  | is_rough()       |
 +-----------+------------------+
 +-----------+------------------+
 
 
+If ``true``, the physics engine will use the friction of the object marked as "rough" when two objects collide. If ``false``, the physics engine will use the lowest friction of all colliding objects instead. If ``true`` for both colliding objects, the physics engine will use the highest friction.
+

+ 122 - 88
classes/class_projectsettings.rst

@@ -524,33 +524,37 @@ Properties
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
 | :ref:`float<class_float>`                     | :ref:`physics/common/physics_jitter_fix<class_ProjectSettings_property_physics/common/physics_jitter_fix>`                                                           | ``0.5``                                                                                         |
 | :ref:`float<class_float>`                     | :ref:`physics/common/physics_jitter_fix<class_ProjectSettings_property_physics/common/physics_jitter_fix>`                                                           | ``0.5``                                                                                         |
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
-| :ref:`Color<class_Color>`                     | :ref:`rendering/environment/default_clear_color<class_ProjectSettings_property_rendering/environment/default_clear_color>`                                           | ``Color( 0.3, 0.3, 0.3, 1 )``                                                                   |
+| :ref:`bool<class_bool>`                       | :ref:`rendering/batching/debug/diagnose_frame<class_ProjectSettings_property_rendering/batching/debug/diagnose_frame>`                                               | ``false``                                                                                       |
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`rendering/environment/default_environment<class_ProjectSettings_property_rendering/environment/default_environment>`                                           | ``""``                                                                                          |
+| :ref:`bool<class_bool>`                       | :ref:`rendering/batching/debug/flash_batching<class_ProjectSettings_property_rendering/batching/debug/flash_batching>`                                               | ``false``                                                                                       |
++-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                         | :ref:`rendering/batching/lights/max_join_items<class_ProjectSettings_property_rendering/batching/lights/max_join_items>`                                             | ``32``                                                                                          |
++-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                     | :ref:`rendering/batching/lights/scissor_area_threshold<class_ProjectSettings_property_rendering/batching/lights/scissor_area_threshold>`                             | ``1.0``                                                                                         |
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                         | :ref:`rendering/gles2/batching/batch_buffer_size<class_ProjectSettings_property_rendering/gles2/batching/batch_buffer_size>`                                         | ``16384``                                                                                       |
+| :ref:`bool<class_bool>`                       | :ref:`rendering/batching/options/single_rect_fallback<class_ProjectSettings_property_rendering/batching/options/single_rect_fallback>`                               | ``false``                                                                                       |
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                     | :ref:`rendering/gles2/batching/colored_vertex_format_threshold<class_ProjectSettings_property_rendering/gles2/batching/colored_vertex_format_threshold>`             | ``0.25``                                                                                        |
+| :ref:`bool<class_bool>`                       | :ref:`rendering/batching/options/use_batching<class_ProjectSettings_property_rendering/batching/options/use_batching>`                                               | ``true``                                                                                        |
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                         | :ref:`rendering/gles2/batching/item_reordering_lookahead<class_ProjectSettings_property_rendering/gles2/batching/item_reordering_lookahead>`                         | ``4``                                                                                           |
+| :ref:`bool<class_bool>`                       | :ref:`rendering/batching/options/use_batching_in_editor<class_ProjectSettings_property_rendering/batching/options/use_batching_in_editor>`                           | ``true``                                                                                        |
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                         | :ref:`rendering/gles2/batching/light_max_join_items<class_ProjectSettings_property_rendering/gles2/batching/light_max_join_items>`                                   | ``32``                                                                                          |
+| :ref:`int<class_int>`                         | :ref:`rendering/batching/parameters/batch_buffer_size<class_ProjectSettings_property_rendering/batching/parameters/batch_buffer_size>`                               | ``16384``                                                                                       |
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                     | :ref:`rendering/gles2/batching/light_scissor_area_threshold<class_ProjectSettings_property_rendering/gles2/batching/light_scissor_area_threshold>`                   | ``1.0``                                                                                         |
+| :ref:`float<class_float>`                     | :ref:`rendering/batching/parameters/colored_vertex_format_threshold<class_ProjectSettings_property_rendering/batching/parameters/colored_vertex_format_threshold>`   | ``0.25``                                                                                        |
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                         | :ref:`rendering/gles2/batching/max_join_item_commands<class_ProjectSettings_property_rendering/gles2/batching/max_join_item_commands>`                               | ``16``                                                                                          |
+| :ref:`int<class_int>`                         | :ref:`rendering/batching/parameters/item_reordering_lookahead<class_ProjectSettings_property_rendering/batching/parameters/item_reordering_lookahead>`               | ``4``                                                                                           |
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                       | :ref:`rendering/gles2/batching/single_rect_fallback<class_ProjectSettings_property_rendering/gles2/batching/single_rect_fallback>`                                   | ``false``                                                                                       |
+| :ref:`int<class_int>`                         | :ref:`rendering/batching/parameters/max_join_item_commands<class_ProjectSettings_property_rendering/batching/parameters/max_join_item_commands>`                     | ``16``                                                                                          |
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                       | :ref:`rendering/gles2/batching/use_batching<class_ProjectSettings_property_rendering/gles2/batching/use_batching>`                                                   | ``true``                                                                                        |
+| :ref:`bool<class_bool>`                       | :ref:`rendering/batching/precision/uv_contract<class_ProjectSettings_property_rendering/batching/precision/uv_contract>`                                             | ``false``                                                                                       |
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                       | :ref:`rendering/gles2/debug/diagnose_frame<class_ProjectSettings_property_rendering/gles2/debug/diagnose_frame>`                                                     | ``false``                                                                                       |
+| :ref:`int<class_int>`                         | :ref:`rendering/batching/precision/uv_contract_amount<class_ProjectSettings_property_rendering/batching/precision/uv_contract_amount>`                               | ``100``                                                                                         |
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                       | :ref:`rendering/gles2/debug/disable_half_float<class_ProjectSettings_property_rendering/gles2/debug/disable_half_float>`                                             | ``false``                                                                                       |
+| :ref:`Color<class_Color>`                     | :ref:`rendering/environment/default_clear_color<class_ProjectSettings_property_rendering/environment/default_clear_color>`                                           | ``Color( 0.3, 0.3, 0.3, 1 )``                                                                   |
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                       | :ref:`rendering/gles2/debug/flash_batching<class_ProjectSettings_property_rendering/gles2/debug/flash_batching>`                                                     | ``false``                                                                                       |
+| :ref:`String<class_String>`                   | :ref:`rendering/environment/default_environment<class_ProjectSettings_property_rendering/environment/default_environment>`                                           | ``""``                                                                                          |
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                       | :ref:`rendering/gles2/debug/use_batching_in_editor<class_ProjectSettings_property_rendering/gles2/debug/use_batching_in_editor>`                                     | ``true``                                                                                        |
+| :ref:`bool<class_bool>`                       | :ref:`rendering/gles2/compatibility/disable_half_float<class_ProjectSettings_property_rendering/gles2/compatibility/disable_half_float>`                             | ``false``                                                                                       |
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                         | :ref:`rendering/limits/buffers/blend_shape_max_buffer_size_kb<class_ProjectSettings_property_rendering/limits/buffers/blend_shape_max_buffer_size_kb>`               | ``4096``                                                                                        |
 | :ref:`int<class_int>`                         | :ref:`rendering/limits/buffers/blend_shape_max_buffer_size_kb<class_ProjectSettings_property_rendering/limits/buffers/blend_shape_max_buffer_size_kb>`               | ``4096``                                                                                        |
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------+
@@ -3715,93 +3719,129 @@ Fix to improve physics jitter, specially on monitors where refresh rate is diffe
 
 
 ----
 ----
 
 
-.. _class_ProjectSettings_property_rendering/environment/default_clear_color:
+.. _class_ProjectSettings_property_rendering/batching/debug/diagnose_frame:
 
 
-- :ref:`Color<class_Color>` **rendering/environment/default_clear_color**
+- :ref:`bool<class_bool>` **rendering/batching/debug/diagnose_frame**
 
 
-+-----------+-------------------------------+
-| *Default* | ``Color( 0.3, 0.3, 0.3, 1 )`` |
-+-----------+-------------------------------+
++-----------+-----------+
+| *Default* | ``false`` |
++-----------+-----------+
 
 
-Default background clear color. Overridable per :ref:`Viewport<class_Viewport>` using its :ref:`Environment<class_Environment>`. See :ref:`Environment.background_mode<class_Environment_property_background_mode>` and :ref:`Environment.background_color<class_Environment_property_background_color>` in particular. To change this default color programmatically, use :ref:`VisualServer.set_default_clear_color<class_VisualServer_method_set_default_clear_color>`.
+When batching is on, this regularly prints a frame diagnosis log. Note that this will degrade performance.
 
 
 ----
 ----
 
 
-.. _class_ProjectSettings_property_rendering/environment/default_environment:
+.. _class_ProjectSettings_property_rendering/batching/debug/flash_batching:
 
 
-- :ref:`String<class_String>` **rendering/environment/default_environment**
+- :ref:`bool<class_bool>` **rendering/batching/debug/flash_batching**
+
++-----------+-----------+
+| *Default* | ``false`` |
++-----------+-----------+
+
+**Experimental** For regression testing against the old renderer. If this is switched on, and ``use_batching`` is set, the renderer will swap alternately between using the old renderer, and the batched renderer, on each frame. This makes it easy to identify visual differences. Performance will be degraded.
+
+----
+
+.. _class_ProjectSettings_property_rendering/batching/lights/max_join_items:
+
+- :ref:`int<class_int>` **rendering/batching/lights/max_join_items**
 
 
 +-----------+--------+
 +-----------+--------+
-| *Default* | ``""`` |
+| *Default* | ``32`` |
 +-----------+--------+
 +-----------+--------+
 
 
-:ref:`Environment<class_Environment>` that will be used as a fallback environment in case a scene does not specify its own environment. The default environment is loaded in at scene load time regardless of whether you have set an environment or not. If you do not rely on the fallback environment, it is best to delete ``default_env.tres``, or to specify a different default environment here.
+Lights have the potential to prevent joining items, and break many of the performance benefits of batching. This setting enables some complex logic to allow joining items if their lighting is similar, and overlap tests pass. This can significantly improve performance in some games. Set to 0 to switch off. With large values the cost of overlap tests may lead to diminishing returns.
 
 
 ----
 ----
 
 
-.. _class_ProjectSettings_property_rendering/gles2/batching/batch_buffer_size:
+.. _class_ProjectSettings_property_rendering/batching/lights/scissor_area_threshold:
+
+- :ref:`float<class_float>` **rendering/batching/lights/scissor_area_threshold**
+
++-----------+---------+
+| *Default* | ``1.0`` |
++-----------+---------+
 
 
-- :ref:`int<class_int>` **rendering/gles2/batching/batch_buffer_size**
+Sets the proportion of the total screen area (in pixels) that must be saved by a scissor operation in order to activate light scissoring. This can prevent parts of items being rendered outside the light area. Lower values scissor more aggressively. A value of 1 scissors none of the items, a value of 0 scissors every item. The power of 4 of the value is used, in order to emphasize the lower range, and multiplied by the total screen area in pixels to give the threshold. This can reduce fill rate requirements in scenes with a lot of lighting.
+
+----
+
+.. _class_ProjectSettings_property_rendering/batching/options/single_rect_fallback:
+
+- :ref:`bool<class_bool>` **rendering/batching/options/single_rect_fallback**
 
 
 +-----------+-----------+
 +-----------+-----------+
-| *Default* | ``16384`` |
+| *Default* | ``false`` |
 +-----------+-----------+
 +-----------+-----------+
 
 
-Size of buffer reserved for batched vertices. Larger size enables larger batches, but there are diminishing returns for the memory used.
+Enabling this setting uses the legacy method to draw batches containing only one rect. The legacy method is faster (approx twice as fast), but can cause flicker on some systems. In order to directly compare performance with the non-batching renderer you can set this to true, but it is recommended to turn this off unless you can guarantee your target hardware will work with this method.
 
 
 ----
 ----
 
 
-.. _class_ProjectSettings_property_rendering/gles2/batching/colored_vertex_format_threshold:
+.. _class_ProjectSettings_property_rendering/batching/options/use_batching:
 
 
-- :ref:`float<class_float>` **rendering/gles2/batching/colored_vertex_format_threshold**
+- :ref:`bool<class_bool>` **rendering/batching/options/use_batching**
 
 
 +-----------+----------+
 +-----------+----------+
-| *Default* | ``0.25`` |
+| *Default* | ``true`` |
 +-----------+----------+
 +-----------+----------+
 
 
-Including color in the vertex format has a cost, however, not including color prevents batching across color changes. This threshold determines the ratio of ``number of vertex color changes / total number of vertices`` above which vertices will be translated to colored format. A value of 0 will always use colored vertices, 1 will never use colored vertices.
+Turns batching on and off. Batching increases performance by reducing the amount of graphics API drawcalls.
 
 
 ----
 ----
 
 
-.. _class_ProjectSettings_property_rendering/gles2/batching/item_reordering_lookahead:
+.. _class_ProjectSettings_property_rendering/batching/options/use_batching_in_editor:
 
 
-- :ref:`int<class_int>` **rendering/gles2/batching/item_reordering_lookahead**
+- :ref:`bool<class_bool>` **rendering/batching/options/use_batching_in_editor**
 
 
-+-----------+-------+
-| *Default* | ``4`` |
-+-----------+-------+
++-----------+----------+
+| *Default* | ``true`` |
++-----------+----------+
 
 
-In certain circumstances, the batcher can reorder items in order to better join them. This may result in better performance. An overlap test is needed however for each item lookahead, so there is a trade off, with diminishing returns. If you are getting no benefit, setting this to 0 will switch it off.
+Switches on batching within the editor.
 
 
 ----
 ----
 
 
-.. _class_ProjectSettings_property_rendering/gles2/batching/light_max_join_items:
+.. _class_ProjectSettings_property_rendering/batching/parameters/batch_buffer_size:
 
 
-- :ref:`int<class_int>` **rendering/gles2/batching/light_max_join_items**
+- :ref:`int<class_int>` **rendering/batching/parameters/batch_buffer_size**
 
 
-+-----------+--------+
-| *Default* | ``32`` |
-+-----------+--------+
++-----------+-----------+
+| *Default* | ``16384`` |
++-----------+-----------+
 
 
-Lights have the potential to prevent joining items, and break many of the performance benefits of batching. This setting enables some complex logic to allow joining items if their lighting is similar, and overlap tests pass. This can significantly improve performance in some games. Set to 0 to switch off. With large values the cost of overlap tests may lead to diminishing returns.
+Size of buffer reserved for batched vertices. Larger size enables larger batches, but there are diminishing returns for the memory used. This should only have a minor effect on performance.
 
 
 ----
 ----
 
 
-.. _class_ProjectSettings_property_rendering/gles2/batching/light_scissor_area_threshold:
+.. _class_ProjectSettings_property_rendering/batching/parameters/colored_vertex_format_threshold:
 
 
-- :ref:`float<class_float>` **rendering/gles2/batching/light_scissor_area_threshold**
+- :ref:`float<class_float>` **rendering/batching/parameters/colored_vertex_format_threshold**
 
 
-+-----------+---------+
-| *Default* | ``1.0`` |
-+-----------+---------+
++-----------+----------+
+| *Default* | ``0.25`` |
++-----------+----------+
+
+Including color in the vertex format has a cost, however, not including color prevents batching across color changes. This threshold determines the ratio of ``number of vertex color changes / total number of vertices`` above which vertices will be translated to colored format. A value of 0 will always use colored vertices, 1 will never use colored vertices.
+
+----
+
+.. _class_ProjectSettings_property_rendering/batching/parameters/item_reordering_lookahead:
+
+- :ref:`int<class_int>` **rendering/batching/parameters/item_reordering_lookahead**
+
++-----------+-------+
+| *Default* | ``4`` |
++-----------+-------+
 
 
-Sets the proportion of the screen area that must be saved by a scissor operation in order to activate light scissoring. This can prevent parts of items being rendered outside the light area. Lower values scissor more aggressively. A value of 1 scissors none of the items, a value of 0 scissors every item. This can reduce fill rate requirements in scenes with a lot of lighting.
+In certain circumstances, the batcher can reorder items in order to better join them. This may result in better performance. An overlap test is needed however for each item lookahead, so there is a trade off, with diminishing returns. If you are getting no benefit, setting this to 0 will switch it off.
 
 
 ----
 ----
 
 
-.. _class_ProjectSettings_property_rendering/gles2/batching/max_join_item_commands:
+.. _class_ProjectSettings_property_rendering/batching/parameters/max_join_item_commands:
 
 
-- :ref:`int<class_int>` **rendering/gles2/batching/max_join_item_commands**
+- :ref:`int<class_int>` **rendering/batching/parameters/max_join_item_commands**
 
 
 +-----------+--------+
 +-----------+--------+
 | *Default* | ``16`` |
 | *Default* | ``16`` |
@@ -3811,75 +3851,67 @@ Sets the number of commands to lookahead to determine whether to batch render it
 
 
 ----
 ----
 
 
-.. _class_ProjectSettings_property_rendering/gles2/batching/single_rect_fallback:
+.. _class_ProjectSettings_property_rendering/batching/precision/uv_contract:
 
 
-- :ref:`bool<class_bool>` **rendering/gles2/batching/single_rect_fallback**
+- :ref:`bool<class_bool>` **rendering/batching/precision/uv_contract**
 
 
 +-----------+-----------+
 +-----------+-----------+
 | *Default* | ``false`` |
 | *Default* | ``false`` |
 +-----------+-----------+
 +-----------+-----------+
 
 
-Enabling this uses the legacy method to draw single rects, which is faster, but can cause flicker on some systems. This is best disabled unless crucial for performance.
+On some platforms (especially mobile), precision issues in shaders can lead to reading 1 texel outside of bounds, particularly where rects are scaled. This can particularly lead to border artifacts around tiles in tilemaps.
+
+This adjustment corrects for this by making a small contraction to the UV coordinates used. Note that this can result in a slight squashing of border texels.
 
 
 ----
 ----
 
 
-.. _class_ProjectSettings_property_rendering/gles2/batching/use_batching:
+.. _class_ProjectSettings_property_rendering/batching/precision/uv_contract_amount:
 
 
-- :ref:`bool<class_bool>` **rendering/gles2/batching/use_batching**
+- :ref:`int<class_int>` **rendering/batching/precision/uv_contract_amount**
 
 
-+-----------+----------+
-| *Default* | ``true`` |
-+-----------+----------+
++-----------+---------+
+| *Default* | ``100`` |
++-----------+---------+
 
 
-Turns batching on and off. Batching increases performance by reducing the amount of graphics API drawcalls.
+The amount of UV contraction. This figure is divided by 1000000, and is a proportion of the total texture dimensions, where the width and height are both ranged from 0.0 to 1.0.
+
+Use the default unless correcting for a problem on particular hardware.
 
 
 ----
 ----
 
 
-.. _class_ProjectSettings_property_rendering/gles2/debug/diagnose_frame:
+.. _class_ProjectSettings_property_rendering/environment/default_clear_color:
 
 
-- :ref:`bool<class_bool>` **rendering/gles2/debug/diagnose_frame**
+- :ref:`Color<class_Color>` **rendering/environment/default_clear_color**
 
 
-+-----------+-----------+
-| *Default* | ``false`` |
-+-----------+-----------+
++-----------+-------------------------------+
+| *Default* | ``Color( 0.3, 0.3, 0.3, 1 )`` |
++-----------+-------------------------------+
 
 
-When batching is on, this regularly prints a frame diagnosis log. Note that this will degrade performance.
+Default background clear color. Overridable per :ref:`Viewport<class_Viewport>` using its :ref:`Environment<class_Environment>`. See :ref:`Environment.background_mode<class_Environment_property_background_mode>` and :ref:`Environment.background_color<class_Environment_property_background_color>` in particular. To change this default color programmatically, use :ref:`VisualServer.set_default_clear_color<class_VisualServer_method_set_default_clear_color>`.
 
 
 ----
 ----
 
 
-.. _class_ProjectSettings_property_rendering/gles2/debug/disable_half_float:
+.. _class_ProjectSettings_property_rendering/environment/default_environment:
 
 
-- :ref:`bool<class_bool>` **rendering/gles2/debug/disable_half_float**
+- :ref:`String<class_String>` **rendering/environment/default_environment**
 
 
-+-----------+-----------+
-| *Default* | ``false`` |
-+-----------+-----------+
++-----------+--------+
+| *Default* | ``""`` |
++-----------+--------+
 
 
-The use of half-float vertex compression may be producing rendering errors on some platforms (especially iOS). These have been seen particularly in particles. Disabling half-float may resolve these problems.
+:ref:`Environment<class_Environment>` that will be used as a fallback environment in case a scene does not specify its own environment. The default environment is loaded in at scene load time regardless of whether you have set an environment or not. If you do not rely on the fallback environment, it is best to delete ``default_env.tres``, or to specify a different default environment here.
 
 
 ----
 ----
 
 
-.. _class_ProjectSettings_property_rendering/gles2/debug/flash_batching:
+.. _class_ProjectSettings_property_rendering/gles2/compatibility/disable_half_float:
 
 
-- :ref:`bool<class_bool>` **rendering/gles2/debug/flash_batching**
+- :ref:`bool<class_bool>` **rendering/gles2/compatibility/disable_half_float**
 
 
 +-----------+-----------+
 +-----------+-----------+
 | *Default* | ``false`` |
 | *Default* | ``false`` |
 +-----------+-----------+
 +-----------+-----------+
 
 
-**Experimental** For regression testing against the old renderer. If this is switched on, and ``use_batching`` is set, the renderer will swap alternately between using the old renderer, and the batched renderer, on each frame. This makes it easy to identify visual differences. Performance will be degraded.
-
-----
-
-.. _class_ProjectSettings_property_rendering/gles2/debug/use_batching_in_editor:
-
-- :ref:`bool<class_bool>` **rendering/gles2/debug/use_batching_in_editor**
-
-+-----------+----------+
-| *Default* | ``true`` |
-+-----------+----------+
-
-**Experimental** Switches on batching within the editor. Use with caution - note that if your editor does not render correctly you may need to edit your ``project.godot`` and remove the use_batching_in_editor setting manually.
+The use of half-float vertex compression may be producing rendering errors on some platforms (especially iOS). These have been seen particularly in particles. Disabling half-float may resolve these problems.
 
 
 ----
 ----
 
 
@@ -4003,6 +4035,8 @@ If ``true``, this option enables a "safe" code path for such NVIDIA GPUs at the
 
 
 If ``true``, forces snapping of polygons to pixels in 2D rendering. May help in some pixel art styles.
 If ``true``, forces snapping of polygons to pixels in 2D rendering. May help in some pixel art styles.
 
 
+Consider using the project setting :ref:`rendering/batching/precision/uv_contract<class_ProjectSettings_property_rendering/batching/precision/uv_contract>` to prevent artifacts.
+
 ----
 ----
 
 
 .. _class_ProjectSettings_property_rendering/quality/depth/hdr:
 .. _class_ProjectSettings_property_rendering/quality/depth/hdr:

+ 1 - 2
classes/class_regex.rst

@@ -55,8 +55,7 @@ If you need to process multiple results, :ref:`search_all<class_RegEx_method_sea
 
 
     for result in regex.search_all("d01, d03, d0c, x3f and x42"):
     for result in regex.search_all("d01, d03, d0c, x3f and x42"):
         print(result.get_string("digit"))
         print(result.get_string("digit"))
-    # Would print 01 03 3f 42
-    # Note that d0c would not match
+    # Would print 01 03 0 3f 42
 
 
 **Note:** Godot's regex implementation is based on the `PCRE2 <https://www.pcre.org/>`_ library. You can view the full pattern reference `here <https://www.pcre.org/current/doc/html/pcre2pattern.html>`_.
 **Note:** Godot's regex implementation is based on the `PCRE2 <https://www.pcre.org/>`_ library. You can view the full pattern reference `here <https://www.pcre.org/current/doc/html/pcre2pattern.html>`_.
 
 

+ 1 - 1
classes/class_regexmatch.rst

@@ -55,7 +55,7 @@ Property Descriptions
 | *Getter*  | get_names() |
 | *Getter*  | get_names() |
 +-----------+-------------+
 +-----------+-------------+
 
 
-A dictionary of named groups and its corresponding group number. Only groups with that were matched are included. If multiple groups have the same name, that name would refer to the first matching one.
+A dictionary of named groups and its corresponding group number. Only groups that were matched are included. If multiple groups have the same name, that name would refer to the first matching one.
 
 
 ----
 ----
 
 

+ 22 - 2
classes/class_richtextlabel.rst

@@ -35,6 +35,8 @@ Properties
 +-----------------------------+------------------------------------------------------------------------------------------------+------------------------------+
 +-----------------------------+------------------------------------------------------------------------------------------------+------------------------------+
 | :ref:`Array<class_Array>`   | :ref:`custom_effects<class_RichTextLabel_property_custom_effects>`                             | ``[  ]``                     |
 | :ref:`Array<class_Array>`   | :ref:`custom_effects<class_RichTextLabel_property_custom_effects>`                             | ``[  ]``                     |
 +-----------------------------+------------------------------------------------------------------------------------------------+------------------------------+
 +-----------------------------+------------------------------------------------------------------------------------------------+------------------------------+
+| :ref:`bool<class_bool>`     | :ref:`fit_content_height<class_RichTextLabel_property_fit_content_height>`                     | ``false``                    |
++-----------------------------+------------------------------------------------------------------------------------------------+------------------------------+
 | :ref:`bool<class_bool>`     | :ref:`meta_underlined<class_RichTextLabel_property_meta_underlined>`                           | ``true``                     |
 | :ref:`bool<class_bool>`     | :ref:`meta_underlined<class_RichTextLabel_property_meta_underlined>`                           | ``true``                     |
 +-----------------------------+------------------------------------------------------------------------------------------------+------------------------------+
 +-----------------------------+------------------------------------------------------------------------------------------------+------------------------------+
 | :ref:`bool<class_bool>`     | :ref:`override_selected_font_color<class_RichTextLabel_property_override_selected_font_color>` | ``false``                    |
 | :ref:`bool<class_bool>`     | :ref:`override_selected_font_color<class_RichTextLabel_property_override_selected_font_color>` | ``false``                    |
@@ -68,7 +70,7 @@ Methods
 +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                  | :ref:`clear<class_RichTextLabel_method_clear>` **(** **)**                                                                                                                               |
 | void                                  | :ref:`clear<class_RichTextLabel_method_clear>` **(** **)**                                                                                                                               |
 +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                 | :ref:`get_content_height<class_RichTextLabel_method_get_content_height>` **(** **)**                                                                                                     |
+| :ref:`int<class_int>`                 | :ref:`get_content_height<class_RichTextLabel_method_get_content_height>` **(** **)** const                                                                                               |
 +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                 | :ref:`get_line_count<class_RichTextLabel_method_get_line_count>` **(** **)** const                                                                                                       |
 | :ref:`int<class_int>`                 | :ref:`get_line_count<class_RichTextLabel_method_get_line_count>` **(** **)** const                                                                                                       |
 +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -367,6 +369,24 @@ To add a custom effect, it's more convenient to use :ref:`install_effect<class_R
 
 
 ----
 ----
 
 
+.. _class_RichTextLabel_property_fit_content_height:
+
+- :ref:`bool<class_bool>` **fit_content_height**
+
++-----------+---------------------------------+
+| *Default* | ``false``                       |
++-----------+---------------------------------+
+| *Setter*  | set_fit_content_height(value)   |
++-----------+---------------------------------+
+| *Getter*  | is_fit_content_height_enabled() |
++-----------+---------------------------------+
+
+If ``true``, the label's height will be automatically updated to fit its content.
+
+**Note:** This property is used as a workaround to fix issues with ``RichTextLabel`` in :ref:`Container<class_Container>`\ s, but it's unreliable in some cases and will be removed in future versions.
+
+----
+
 .. _class_RichTextLabel_property_meta_underlined:
 .. _class_RichTextLabel_property_meta_underlined:
 
 
 - :ref:`bool<class_bool>` **meta_underlined**
 - :ref:`bool<class_bool>` **meta_underlined**
@@ -552,7 +572,7 @@ Clears the tag stack and sets :ref:`bbcode_text<class_RichTextLabel_property_bbc
 
 
 .. _class_RichTextLabel_method_get_content_height:
 .. _class_RichTextLabel_method_get_content_height:
 
 
-- :ref:`int<class_int>` **get_content_height** **(** **)**
+- :ref:`int<class_int>` **get_content_height** **(** **)** const
 
 
 Returns the height of the content.
 Returns the height of the content.
 
 

+ 5 - 3
classes/class_rigidbody.rst

@@ -152,7 +152,9 @@ This signal not only receives the body that stopped colliding with this one, but
 
 
 - **sleeping_state_changed** **(** **)**
 - **sleeping_state_changed** **(** **)**
 
 
-Emitted when the body changes its sleeping state. Either by sleeping or waking up.
+Emitted when the physics engine changes the body's sleeping state.
+
+**Note:** Changing the value :ref:`sleeping<class_RigidBody_property_sleeping>` will not trigger this signal. It is only emitted if the sleeping state is changed by the physics engine or ``emit_signal("sleeping_state_changed")`` is used.
 
 
 Enumerations
 Enumerations
 ------------
 ------------
@@ -336,7 +338,7 @@ Deprecated, use :ref:`PhysicsMaterial.bounce<class_PhysicsMaterial_property_boun
 | *Getter*  | is_able_to_sleep()   |
 | *Getter*  | is_able_to_sleep()   |
 +-----------+----------------------+
 +-----------+----------------------+
 
 
-If ``true``, the RigidBody will not calculate forces and will act as a static body while there is no movement. It will wake up when forces are applied through other collisions or when the ``apply_impulse`` method is used.
+If ``true``, the body can enter sleep mode when there is no movement. See :ref:`sleeping<class_RigidBody_property_sleeping>`.
 
 
 ----
 ----
 
 
@@ -530,7 +532,7 @@ If a material is assigned to this property, it will be used instead of any other
 | *Getter*  | is_sleeping()       |
 | *Getter*  | is_sleeping()       |
 +-----------+---------------------+
 +-----------+---------------------+
 
 
-If ``true``, the body is sleeping and will not calculate forces until woken up by a collision or the ``apply_impulse`` method.
+If ``true``, the body will not move and will not calculate forces until woken up by another body through, for example, a collision, or by using the :ref:`apply_impulse<class_RigidBody_method_apply_impulse>` or :ref:`add_force<class_RigidBody_method_add_force>` methods.
 
 
 ----
 ----
 
 

+ 5 - 3
classes/class_rigidbody2d.rst

@@ -135,7 +135,9 @@ Emitted when a body shape exits contact with this one. Reports colliding shape i
 
 
 - **sleeping_state_changed** **(** **)**
 - **sleeping_state_changed** **(** **)**
 
 
-Emitted when :ref:`sleeping<class_RigidBody2D_property_sleeping>` changes.
+Emitted when the physics engine changes the body's sleeping state.
+
+**Note:** Changing the value :ref:`sleeping<class_RigidBody2D_property_sleeping>` will not trigger this signal. It is only emitted if the sleeping state is changed by the physics engine or ``emit_signal("sleeping_state_changed")`` is used.
 
 
 Enumerations
 Enumerations
 ------------
 ------------
@@ -273,7 +275,7 @@ Deprecated, use :ref:`PhysicsMaterial.bounce<class_PhysicsMaterial_property_boun
 | *Getter*  | is_able_to_sleep()   |
 | *Getter*  | is_able_to_sleep()   |
 +-----------+----------------------+
 +-----------+----------------------+
 
 
-If ``true``, the body will not calculate forces and will act as a static body if there is no movement. The body will wake up when other forces are applied via collisions or by using :ref:`apply_impulse<class_RigidBody2D_method_apply_impulse>` or :ref:`add_force<class_RigidBody2D_method_add_force>`.
+If ``true``, the body can enter sleep mode when there is no movement. See :ref:`sleeping<class_RigidBody2D_property_sleeping>`.
 
 
 ----
 ----
 
 
@@ -481,7 +483,7 @@ If a material is assigned to this property, it will be used instead of any other
 | *Getter*  | is_sleeping()       |
 | *Getter*  | is_sleeping()       |
 +-----------+---------------------+
 +-----------+---------------------+
 
 
-If ``true``, the body is sleeping and will not calculate forces until woken up by a collision or by using :ref:`apply_impulse<class_RigidBody2D_method_apply_impulse>` or :ref:`add_force<class_RigidBody2D_method_add_force>`.
+If ``true``, the body will not move and will not calculate forces until woken up by another body through, for example, a collision, or by using the :ref:`apply_impulse<class_RigidBody2D_method_apply_impulse>` or :ref:`add_force<class_RigidBody2D_method_add_force>` methods.
 
 
 ----
 ----
 
 

+ 10 - 0
classes/class_shape2d.rst

@@ -44,6 +44,8 @@ Methods
 +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Array<class_Array>` | :ref:`collide_with_motion_and_get_contacts<class_Shape2D_method_collide_with_motion_and_get_contacts>` **(** :ref:`Transform2D<class_Transform2D>` local_xform, :ref:`Vector2<class_Vector2>` local_motion, :ref:`Shape2D<class_Shape2D>` with_shape, :ref:`Transform2D<class_Transform2D>` shape_xform, :ref:`Vector2<class_Vector2>` shape_motion **)** |
 | :ref:`Array<class_Array>` | :ref:`collide_with_motion_and_get_contacts<class_Shape2D_method_collide_with_motion_and_get_contacts>` **(** :ref:`Transform2D<class_Transform2D>` local_xform, :ref:`Vector2<class_Vector2>` local_motion, :ref:`Shape2D<class_Shape2D>` with_shape, :ref:`Transform2D<class_Transform2D>` shape_xform, :ref:`Vector2<class_Vector2>` shape_motion **)** |
 +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                      | :ref:`draw<class_Shape2D_method_draw>` **(** :ref:`RID<class_RID>` canvas_item, :ref:`Color<class_Color>` color **)**                                                                                                                                                                                                                                     |
++---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 
 Property Descriptions
 Property Descriptions
 ---------------------
 ---------------------
@@ -103,3 +105,11 @@ Returns a list of the points where this shape would touch another, if a given mo
 
 
 This method needs the transformation matrix for this shape (``local_xform``), the movement to test on this shape (``local_motion``), the shape to check collisions with (``with_shape``), the transformation matrix of that shape (``shape_xform``), and the movement to test onto the other object (``shape_motion``).
 This method needs the transformation matrix for this shape (``local_xform``), the movement to test on this shape (``local_motion``), the shape to check collisions with (``with_shape``), the transformation matrix of that shape (``shape_xform``), and the movement to test onto the other object (``shape_motion``).
 
 
+----
+
+.. _class_Shape2D_method_draw:
+
+- void **draw** **(** :ref:`RID<class_RID>` canvas_item, :ref:`Color<class_Color>` color **)**
+
+Draws a solid shape onto a :ref:`CanvasItem<class_CanvasItem>` with the :ref:`VisualServer<class_VisualServer>` API filled with the specified ``color``. The exact drawing method is specific for each shape and cannot be configured.
+

+ 1 - 1
classes/class_spotlight.rst

@@ -99,5 +99,5 @@ The spotlight's light energy attenuation curve.
 | *Getter*  | get_param()      |
 | *Getter*  | get_param()      |
 +-----------+------------------+
 +-----------+------------------+
 
 
-The maximal range that can be reached by the spotlight.
+The maximal range that can be reached by the spotlight. Note that the effectively lit area may appear to be smaller depending on the :ref:`spot_attenuation<class_SpotLight_property_spot_attenuation>` in use. No matter the :ref:`spot_attenuation<class_SpotLight_property_spot_attenuation>` in use, the light will never reach anything outside this range.
 
 

+ 12 - 4
classes/class_string.rst

@@ -483,7 +483,15 @@ Erases ``chars`` characters from the string starting from ``position``.
 
 
 - :ref:`int<class_int>` **find** **(** :ref:`String<class_String>` what, :ref:`int<class_int>` from=0 **)**
 - :ref:`int<class_int>` **find** **(** :ref:`String<class_String>` what, :ref:`int<class_int>` from=0 **)**
 
 
-Finds the first occurrence of a substring. Returns the starting position of the substring or -1 if not found. Optionally, the initial search index can be passed.
+Finds the first occurrence of a substring. Returns the starting position of the substring or ``-1`` if not found. Optionally, the initial search index can be passed.
+
+**Note:** If you just want to know whether a string contains a substring, use the ``in`` operator as follows:
+
+::
+
+    # Will evaluate to `false`.
+    if "i" in "team":
+        pass
 
 
 ----
 ----
 
 
@@ -491,7 +499,7 @@ Finds the first occurrence of a substring. Returns the starting position of the
 
 
 - :ref:`int<class_int>` **find_last** **(** :ref:`String<class_String>` what **)**
 - :ref:`int<class_int>` **find_last** **(** :ref:`String<class_String>` what **)**
 
 
-Finds the last occurrence of a substring. Returns the starting position of the substring or -1 if not found.
+Finds the last occurrence of a substring. Returns the starting position of the substring or ``-1`` if not found.
 
 
 ----
 ----
 
 
@@ -499,7 +507,7 @@ Finds the last occurrence of a substring. Returns the starting position of the s
 
 
 - :ref:`int<class_int>` **findn** **(** :ref:`String<class_String>` what, :ref:`int<class_int>` from=0 **)**
 - :ref:`int<class_int>` **findn** **(** :ref:`String<class_String>` what, :ref:`int<class_int>` from=0 **)**
 
 
-Finds the first occurrence of a substring, ignoring case. Returns the starting position of the substring or -1 if not found. Optionally, the initial search index can be passed.
+Finds the first occurrence of a substring, ignoring case. Returns the starting position of the substring or ``-1`` if not found. Optionally, the initial search index can be passed.
 
 
 ----
 ----
 
 
@@ -987,7 +995,7 @@ Returns a copy of the string stripped of any escape character. These include all
 
 
 - :ref:`String<class_String>` **substr** **(** :ref:`int<class_int>` from, :ref:`int<class_int>` len=-1 **)**
 - :ref:`String<class_String>` **substr** **(** :ref:`int<class_int>` from, :ref:`int<class_int>` len=-1 **)**
 
 
-Returns part of the string from the position ``from`` with length ``len``. Argument ``len`` is optional and using -1 will return remaining characters from given position.
+Returns part of the string from the position ``from`` with length ``len``. Argument ``len`` is optional and using ``-1`` will return remaining characters from given position.
 
 
 ----
 ----
 
 

+ 4 - 0
classes/class_tileset.rst

@@ -259,6 +259,10 @@ Method Descriptions
 
 
 - :ref:`bool<class_bool>` **_is_tile_bound** **(** :ref:`int<class_int>` drawn_id, :ref:`int<class_int>` neighbor_id **)** virtual
 - :ref:`bool<class_bool>` **_is_tile_bound** **(** :ref:`int<class_int>` drawn_id, :ref:`int<class_int>` neighbor_id **)** virtual
 
 
+Determines when the auto-tiler should consider two different auto-tile IDs to be bound together.
+
+**Note:** ``neighbor_id`` will be ``-1`` (:ref:`TileMap.INVALID_CELL<class_TileMap_constant_INVALID_CELL>`) when checking a tile against an empty neighbor tile.
+
 ----
 ----
 
 
 .. _class_TileSet_method_autotile_clear_bitmask_map:
 .. _class_TileSet_method_autotile_clear_bitmask_map:

+ 2 - 0
classes/class_vector2.rst

@@ -16,6 +16,8 @@ Description
 
 
 2-element structure that can be used to represent positions in 2D space or any other pair of numeric values.
 2-element structure that can be used to represent positions in 2D space or any other pair of numeric values.
 
 
+**Note:** In a boolean context, a Vector2 will evaluate to ``false`` if it's equal to ``Vector2(0, 0)``. Otherwise, a Vector2 will always evaluate to ``true``.
+
 Tutorials
 Tutorials
 ---------
 ---------
 
 

+ 2 - 0
classes/class_vector3.rst

@@ -16,6 +16,8 @@ Description
 
 
 3-element structure that can be used to represent positions in 3D space or any other pair of numeric values.
 3-element structure that can be used to represent positions in 3D space or any other pair of numeric values.
 
 
+**Note:** In a boolean context, a Vector3 will evaluate to ``false`` if it's equal to ``Vector3(0, 0, 0)``. Otherwise, a Vector3 will always evaluate to ``true``.
+
 Tutorials
 Tutorials
 ---------
 ---------
 
 

+ 2 - 0
classes/class_viewportcontainer.rst

@@ -18,6 +18,8 @@ Description
 
 
 A :ref:`Container<class_Container>` node that holds a :ref:`Viewport<class_Viewport>`, automatically setting its size.
 A :ref:`Container<class_Container>` node that holds a :ref:`Viewport<class_Viewport>`, automatically setting its size.
 
 
+**Note:** Changing a ViewportContainer's :ref:`Control.rect_scale<class_Control_property_rect_scale>` will cause its contents to appear distorted. To change its visual size without causing distortion, adjust the node's margins instead (if it's not already in a container).
+
 Properties
 Properties
 ----------
 ----------
 
 

+ 34 - 0
classes/class_visualserver.rst

@@ -39,6 +39,13 @@ Tutorials
 
 
 - :doc:`../tutorials/optimization/using_servers`
 - :doc:`../tutorials/optimization/using_servers`
 
 
+Properties
+----------
+
++-------------------------+-----------------------------------------------------------------------------+
+| :ref:`bool<class_bool>` | :ref:`render_loop_enabled<class_VisualServer_property_render_loop_enabled>` |
++-------------------------+-----------------------------------------------------------------------------+
+
 Methods
 Methods
 -------
 -------
 
 
@@ -635,6 +642,8 @@ Methods
 +---------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                                    | :ref:`set_default_clear_color<class_VisualServer_method_set_default_clear_color>` **(** :ref:`Color<class_Color>` color **)**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
 | void                                                    | :ref:`set_default_clear_color<class_VisualServer_method_set_default_clear_color>` **(** :ref:`Color<class_Color>` color **)**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
 +---------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                    | :ref:`set_shader_time_scale<class_VisualServer_method_set_shader_time_scale>` **(** :ref:`float<class_float>` scale **)**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
++---------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`RID<class_RID>`                                   | :ref:`shader_create<class_VisualServer_method_shader_create>` **(** **)**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
 | :ref:`RID<class_RID>`                                   | :ref:`shader_create<class_VisualServer_method_shader_create>` **(** **)**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
 +---------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`String<class_String>`                             | :ref:`shader_get_code<class_VisualServer_method_shader_get_code>` **(** :ref:`RID<class_RID>` shader **)** const                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
 | :ref:`String<class_String>`                             | :ref:`shader_get_code<class_VisualServer_method_shader_get_code>` **(** :ref:`RID<class_RID>` shader **)** const                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
@@ -1919,6 +1928,21 @@ Constants
 
 
 - **MATERIAL_RENDER_PRIORITY_MAX** = **127** --- The maximum renderpriority of all materials.
 - **MATERIAL_RENDER_PRIORITY_MAX** = **127** --- The maximum renderpriority of all materials.
 
 
+Property Descriptions
+---------------------
+
+.. _class_VisualServer_property_render_loop_enabled:
+
+- :ref:`bool<class_bool>` **render_loop_enabled**
+
++----------+--------------------------------+
+| *Setter* | set_render_loop_enabled(value) |
++----------+--------------------------------+
+| *Getter* | is_render_loop_enabled()       |
++----------+--------------------------------+
+
+If ``false``, disables rendering completely, but the engine logic is still being processed. You can call :ref:`force_draw<class_VisualServer_method_force_draw>` to draw a frame even with rendering disabled.
+
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
 
 
@@ -4376,6 +4400,16 @@ Sets the default clear color which is used when a specific clear color has not b
 
 
 ----
 ----
 
 
+.. _class_VisualServer_method_set_shader_time_scale:
+
+- void **set_shader_time_scale** **(** :ref:`float<class_float>` scale **)**
+
+Sets the scale to apply to the passage of time for the shaders' ``TIME`` builtin.
+
+The default value is ``1.0``, which means ``TIME`` will count the real time as it goes by, without narrowing or stretching it.
+
+----
+
 .. _class_VisualServer_method_shader_create:
 .. _class_VisualServer_method_shader_create:
 
 
 - :ref:`RID<class_RID>` **shader_create** **(** **)**
 - :ref:`RID<class_RID>` **shader_create** **(** **)**