瀏覽代碼

classref: Sync with current master branch (42c7f14)

Godot Organization 1 月之前
父節點
當前提交
f9f2c80955
共有 100 個文件被更改,包括 625 次插入247 次删除
  1. 23 22
      classes/[email protected]
  2. 29 32
      classes/[email protected]
  3. 15 14
      classes/class_aabb.rst
  4. 1 0
      classes/class_acceptdialog.rst
  5. 7 6
      classes/class_aescontext.rst
  6. 197 0
      classes/class_aimmodifier3d.rst
  7. 1 0
      classes/class_animatablebody2d.rst
  8. 1 0
      classes/class_animatablebody3d.rst
  9. 1 0
      classes/class_animatedsprite2d.rst
  10. 1 0
      classes/class_animatedsprite3d.rst
  11. 1 0
      classes/class_animatedtexture.rst
  12. 2 1
      classes/class_animation.rst
  13. 1 0
      classes/class_animationlibrary.rst
  14. 8 7
      classes/class_animationmixer.rst
  15. 4 3
      classes/class_animationnode.rst
  16. 1 0
      classes/class_animationnodeadd2.rst
  17. 1 0
      classes/class_animationnodeadd3.rst
  18. 1 0
      classes/class_animationnodeanimation.rst
  19. 1 0
      classes/class_animationnodeblend2.rst
  20. 1 0
      classes/class_animationnodeblend3.rst
  21. 2 1
      classes/class_animationnodeblendspace1d.rst
  22. 2 1
      classes/class_animationnodeblendspace2d.rst
  23. 1 0
      classes/class_animationnodeblendtree.rst
  24. 9 8
      classes/class_animationnodeextension.rst
  25. 9 8
      classes/class_animationnodeoneshot.rst
  26. 1 0
      classes/class_animationnodeoutput.rst
  27. 1 0
      classes/class_animationnodestatemachine.rst
  28. 32 0
      classes/class_animationnodestatemachineplayback.rst
  29. 1 0
      classes/class_animationnodestatemachinetransition.rst
  30. 1 0
      classes/class_animationnodesub2.rst
  31. 1 0
      classes/class_animationnodesync.rst
  32. 1 0
      classes/class_animationnodetimescale.rst
  33. 3 2
      classes/class_animationnodetimeseek.rst
  34. 5 4
      classes/class_animationnodetransition.rst
  35. 1 0
      classes/class_animationplayer.rst
  36. 1 0
      classes/class_animationrootnode.rst
  37. 1 0
      classes/class_animationtree.rst
  38. 6 5
      classes/class_area2d.rst
  39. 6 5
      classes/class_area3d.rst
  40. 36 33
      classes/class_array.rst
  41. 6 5
      classes/class_arraymesh.rst
  42. 1 0
      classes/class_arrayoccluder3d.rst
  43. 1 0
      classes/class_aspectratiocontainer.rst
  44. 15 7
      classes/class_astar2d.rst
  45. 11 10
      classes/class_astar3d.rst
  46. 8 0
      classes/class_astargrid2d.rst
  47. 1 0
      classes/class_atlastexture.rst
  48. 1 0
      classes/class_audiobuslayout.rst
  49. 8 7
      classes/class_audioeffect.rst
  50. 1 0
      classes/class_audioeffectamplify.rst
  51. 1 0
      classes/class_audioeffectbandlimitfilter.rst
  52. 1 0
      classes/class_audioeffectbandpassfilter.rst
  53. 1 0
      classes/class_audioeffectcapture.rst
  54. 1 0
      classes/class_audioeffectchorus.rst
  55. 2 1
      classes/class_audioeffectcompressor.rst
  56. 1 0
      classes/class_audioeffectdelay.rst
  57. 1 0
      classes/class_audioeffectdistortion.rst
  58. 1 0
      classes/class_audioeffecteq.rst
  59. 1 0
      classes/class_audioeffecteq10.rst
  60. 1 0
      classes/class_audioeffecteq21.rst
  61. 1 0
      classes/class_audioeffecteq6.rst
  62. 1 0
      classes/class_audioeffectfilter.rst
  63. 1 0
      classes/class_audioeffecthardlimiter.rst
  64. 1 0
      classes/class_audioeffecthighpassfilter.rst
  65. 1 0
      classes/class_audioeffecthighshelffilter.rst
  66. 7 6
      classes/class_audioeffectinstance.rst
  67. 1 0
      classes/class_audioeffectlimiter.rst
  68. 1 0
      classes/class_audioeffectlowpassfilter.rst
  69. 1 0
      classes/class_audioeffectlowshelffilter.rst
  70. 1 0
      classes/class_audioeffectnotchfilter.rst
  71. 1 0
      classes/class_audioeffectpanner.rst
  72. 1 0
      classes/class_audioeffectphaser.rst
  73. 1 0
      classes/class_audioeffectpitchshift.rst
  74. 2 1
      classes/class_audioeffectrecord.rst
  75. 1 0
      classes/class_audioeffectreverb.rst
  76. 1 0
      classes/class_audioeffectspectrumanalyzer.rst
  77. 2 1
      classes/class_audioeffectspectrumanalyzerinstance.rst
  78. 1 0
      classes/class_audioeffectstereoenhance.rst
  79. 1 0
      classes/class_audiolistener2d.rst
  80. 1 0
      classes/class_audiolistener3d.rst
  81. 1 0
      classes/class_audiosample.rst
  82. 1 0
      classes/class_audiosampleplayback.rst
  83. 1 0
      classes/class_audioserver.rst
  84. 17 0
      classes/class_audiostream.rst
  85. 8 7
      classes/class_audiostreamgenerator.rst
  86. 1 0
      classes/class_audiostreamgeneratorplayback.rst
  87. 1 0
      classes/class_audiostreaminteractive.rst
  88. 1 0
      classes/class_audiostreammicrophone.rst
  89. 1 0
      classes/class_audiostreammp3.rst
  90. 24 0
      classes/class_audiostreamoggvorbis.rst
  91. 41 40
      classes/class_audiostreamplayback.rst
  92. 1 0
      classes/class_audiostreamplaybackinteractive.rst
  93. 1 0
      classes/class_audiostreamplaybackoggvorbis.rst
  94. 1 0
      classes/class_audiostreamplaybackplaylist.rst
  95. 1 0
      classes/class_audiostreamplaybackpolyphonic.rst
  96. 10 9
      classes/class_audiostreamplaybackresampled.rst
  97. 1 0
      classes/class_audiostreamplaybacksynchronized.rst
  98. 2 1
      classes/class_audiostreamplayer.rst
  99. 1 0
      classes/class_audiostreamplayer2d.rst
  100. 1 0
      classes/class_audiostreamplayer3d.rst

+ 23 - 22
classes/[email protected]

@@ -133,27 +133,27 @@ Mark the following property as exported (editable in the Inspector dock and save
 ::
 
     extends Node
-    
+
     enum Direction {LEFT, RIGHT, UP, DOWN}
-    
+
     # Built-in types.
     @export var string = ""
     @export var int_number = 5
     @export var float_number: float = 5
-    
+
     # Enums.
     @export var type: Variant.Type
     @export var format: Image.Format
     @export var direction: Direction
-    
+
     # Resources.
     @export var image: Image
     @export var custom_resource: CustomResource
-    
+
     # Nodes.
     @export var node: Node
     @export var custom_node: CustomNode
-    
+
     # Typed arrays.
     @export var int_array: Array[int]
     @export var direction_array: Array[Direction]
@@ -261,7 +261,7 @@ See also :ref:`@GlobalScope.PROPERTY_HINT_ENUM<class_@GlobalScope_constant_PROPE
     @export_enum("Warrior", "Magician", "Thief") var character_class: int
     @export_enum("Slow:30", "Average:60", "Very Fast:200") var character_speed: int
     @export_enum("Rebecca", "Mary", "Leah") var character_name: String
-    
+
     @export_enum("Sword", "Spear", "Mace") var character_items: Array[int]
     @export_enum("double_jump", "climb", "dash") var character_skills: Array[String]
 
@@ -277,7 +277,7 @@ If you want to use named GDScript enums, then use :ref:`@export<class_@GDScript_
 
     enum CharacterName {REBECCA, MARY, LEAH}
     @export var character_name: CharacterName
-    
+
     enum CharacterItem {SWORD, SPEAR, MACE}
     @export var character_items: Array[CharacterItem]
 
@@ -566,11 +566,11 @@ See also :ref:`@GlobalScope.PROPERTY_USAGE_GROUP<class_@GlobalScope_constant_PRO
     @export_group("Racer Properties")
     @export var nickname = "Nick"
     @export var age = 26
-    
+
     @export_group("Car Properties", "car_")
     @export var car_label = "Speedy"
     @export var car_number = 3
-    
+
     @export_group("", "")
     @export var ungrouped_number = 3
 
@@ -657,10 +657,10 @@ See also :ref:`@GlobalScope.PROPERTY_HINT_RANGE<class_@GlobalScope_constant_PROP
     @export_range(-10, 20) var number
     @export_range(-10, 20, 0.2) var number: float
     @export_range(0, 20) var numbers: Array[float]
-    
+
     @export_range(0, 100, 1, "or_greater") var power_percent
     @export_range(0, 100, 1, "or_greater", "or_less") var health_delta
-    
+
     @export_range(-180, 180, 0.001, "radians_as_degrees") var angle_radians
     @export_range(0, 360, 1, "degrees") var angle_degrees
     @export_range(-8, 8, 2, "suffix:px") var target_offset
@@ -702,7 +702,7 @@ See also :ref:`@GlobalScope.PROPERTY_USAGE_SUBGROUP<class_@GlobalScope_constant_
     @export_group("Racer Properties")
     @export var nickname = "Nick"
     @export var age = 26
-    
+
     @export_subgroup("Car Properties", "car_")
     @export var car_label = "Speedy"
     @export var car_number = 3
@@ -744,14 +744,14 @@ See also :ref:`@GlobalScope.PROPERTY_HINT_TOOL_BUTTON<class_@GlobalScope_constan
 
     @tool
     extends Sprite2D
-    
+
     @export_tool_button("Hello") var hello_action = hello
     @export_tool_button("Randomize the color!", "ColorRect")
     var randomize_color_action = randomize_color
-    
+
     func hello():
         print("Hello world!")
-    
+
     func randomize_color():
         var undo_redo = EditorInterface.get_editor_undo_redo()
         undo_redo.create_action("Randomized Sprite2D Color")
@@ -833,10 +833,10 @@ The order of ``mode``, ``sync`` and ``transfer_mode`` does not matter, but value
 
     @rpc
     func fn(): pass
-    
+
     @rpc("any_peer", "unreliable_ordered")
     func fn_update_pos(): pass
-    
+
     @rpc("authority", "call_remote", "unreliable", 0) # Equivalent to @rpc
     func fn_default(): pass
 
@@ -1027,7 +1027,7 @@ Converts ``what`` to ``type`` in the best way possible. The ``type`` uses the :r
 
     var a = [4, 2.5, 1.2]
     print(a is Array) # Prints true
-    
+
     var b = convert(a, TYPE_PACKED_BYTE_ARRAY)
     print(b)          # Prints [4, 2, 1]
     print(b is Array) # Prints false
@@ -1062,10 +1062,10 @@ Returns an array of dictionaries representing the current call stack. See also :
 
     func _ready():
         foo()
-    
+
     func foo():
         bar()
-    
+
     func bar():
         print(get_stack())
 
@@ -1161,7 +1161,7 @@ Returns the length of the given Variant ``var``. The length can be the character
 
     var a = [1, 2, 3, 4]
     len(a) # Returns 4
-    
+
     var b = "Hello!"
     len(b) # Returns 6
 
@@ -1336,6 +1336,7 @@ Returns ``true`` if the given :ref:`Object<class_Object>`-derived class exists i
     type_exists("NonExistentClass") # Returns false
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 29 - 32
classes/[email protected]

@@ -3052,7 +3052,7 @@ Since :ref:`OK<class_@GlobalScope_constant_OK>` has value ``0``, and all other e
     var error = method_that_returns_error()
     if error != OK:
         printerr("Failure!")
-    
+
     # Or, alternatively:
     if error:
         printerr("Still failing!")
@@ -3715,7 +3715,7 @@ If a property is :ref:`Dictionary<class_Dictionary>`, hints the editor how to sh
     hint_string = "%d/%d:Zero,One,Three:3,Six:6" % [TYPE_INT, PROPERTY_HINT_ENUM] # Array of integers (an enum).
     hint_string = "%d/%d:*.png" % [TYPE_STRING, PROPERTY_HINT_FILE] # Array of strings (file paths).
     hint_string = "%d/%d:Texture2D" % [TYPE_OBJECT, PROPERTY_HINT_RESOURCE_TYPE] # Array of textures.
-    
+
     hint_string = "%d:%d:" % [TYPE_ARRAY, TYPE_FLOAT] # Two-dimensional array of floats.
     hint_string = "%d:%d/%d:" % [TYPE_ARRAY, TYPE_STRING, PROPERTY_HINT_MULTILINE_TEXT] # Two-dimensional array of multiline strings.
     hint_string = "%d:%d/%d:-1,1,0.1" % [TYPE_ARRAY, TYPE_FLOAT, PROPERTY_HINT_RANGE] # Two-dimensional array of floats (in range from -1 to 1).
@@ -3728,7 +3728,7 @@ If a property is :ref:`Dictionary<class_Dictionary>`, hints the editor how to sh
     hintString = $"{Variant.Type.Int:D}/{PropertyHint.Enum:D}:Zero,One,Three:3,Six:6"; // Array of integers (an enum).
     hintString = $"{Variant.Type.String:D}/{PropertyHint.File:D}:*.png"; // Array of strings (file paths).
     hintString = $"{Variant.Type.Object:D}/{PropertyHint.ResourceType:D}:Texture2D"; // Array of textures.
-    
+
     hintString = $"{Variant.Type.Array:D}:{Variant.Type.Float:D}:"; // Two-dimensional array of floats.
     hintString = $"{Variant.Type.Array:D}:{Variant.Type.String:D}/{PropertyHint.MultilineText:D}:"; // Two-dimensional array of multiline strings.
     hintString = $"{Variant.Type.Array:D}:{Variant.Type.Float:D}/{PropertyHint.Range:D}:-1,1,0.1"; // Two-dimensional array of floats (in range from -1 to 1).
@@ -5289,19 +5289,19 @@ Returns the absolute value of a :ref:`Variant<class_Variant>` parameter ``x`` (i
 
     var a = abs(-1)
     # a is 1
-    
+
     var b = abs(-1.2)
     # b is 1.2
-    
+
     var c = abs(Vector2(-3.5, -4))
     # c is (3.5, 4)
-    
+
     var d = abs(Vector2i(-5, -6))
     # d is (5, 6)
-    
+
     var e = abs(Vector3(-7, 8.5, -3.8))
     # e is (7, 8.5, 3.8)
-    
+
     var f = abs(Vector3i(-7, -8, -9))
     # f is (7, 8, 9)
 
@@ -5374,7 +5374,7 @@ Returns the hyperbolic arc (also called inverse) cosine of ``x``, returning a va
 
     var a = acosh(2) # Returns 1.31695789692482
     cosh(a) # Returns 2
-    
+
     var b = acosh(-1) # Returns 0
 
 .. rst-class:: classref-item-separator
@@ -5479,7 +5479,7 @@ In mathematics, the inverse hyperbolic tangent is only defined for -1 < ``x`` <
 
     var a = atanh(0.9) # Returns 1.47221948958322
     tanh(a) # Returns 0.9
-    
+
     var b = atanh(-2) # Returns -inf
     tanh(b) # Returns -1
 
@@ -5600,7 +5600,7 @@ Clamps the ``value``, returning a :ref:`Variant<class_Variant>` not less than ``
 
     var a = clamp(-10, -1, 5)
     # a is -1
-    
+
     var b = clamp(8.1, 0.9, 5.5)
     # b is 5.5
 
@@ -5624,7 +5624,7 @@ Clamps the ``value``, returning a :ref:`float<class_float>` not less than ``min`
 
     var speed = 42.1
     var a = clampf(speed, 1.0, 20.5) # a is 20.5
-    
+
     speed = -10.0
     var b = clampf(speed, -1.0, 1.0) # b is -1.0
 
@@ -5644,7 +5644,7 @@ Clamps the ``value``, returning an :ref:`int<class_int>` not less than ``min`` a
 
     var speed = 42
     var a = clampi(speed, 1, 20) # a is 20
-    
+
     speed = -10
     var b = clampi(speed, -1, 1) # b is -1
 
@@ -5971,7 +5971,7 @@ Returns the :ref:`Object<class_Object>` that corresponds to ``instance_id``. All
  .. code-tab:: gdscript
 
     var drink = "water"
-    
+
     func _ready():
         var id = get_instance_id()
         var instance = instance_from_id(id)
@@ -5982,7 +5982,7 @@ Returns the :ref:`Object<class_Object>` that corresponds to ``instance_id``. All
     public partial class MyNode : Node
     {
         public string Drink { get; set; } = "water";
-    
+
         public override void _Ready()
         {
             ulong id = GetInstanceId();
@@ -6010,7 +6010,7 @@ Returns an interpolation or extrapolation factor considering the range specified
     # The interpolation ratio in the `lerp()` call below is 0.75.
     var middle = lerp(20, 30, 0.75)
     # middle is now 27.5.
-    
+
     # Now, we pretend to have forgotten the original ratio and want to get it back.
     var ratio = inverse_lerp(20, 30, 27.5)
     # ratio is now 0.75.
@@ -6114,7 +6114,7 @@ Returns ``true``, for value types, if ``a`` and ``b`` share the same value. Retu
     is_same(vec2_a, vec2_a)  # true
     is_same(vec2_a, vec2_b)  # true
     is_same(vec2_a, vec2_c)  # false
-    
+
     # Array is a reference type
     var arr_a = []
     var arr_b = []
@@ -6385,7 +6385,7 @@ Returns the smallest integer power of 2 that is greater than or equal to ``value
     nearest_po2(3) # Returns 4
     nearest_po2(4) # Returns 4
     nearest_po2(5) # Returns 8
-    
+
     nearest_po2(0)  # Returns 0 (this may not be expected)
     nearest_po2(-1) # Returns 0 (this may not be expected)
 
@@ -6528,8 +6528,6 @@ When printing to standard output, the supported subset of BBCode is converted to
 
 \ **Note:** Consider using :ref:`push_error()<class_@GlobalScope_method_push_error>` and :ref:`push_warning()<class_@GlobalScope_method_push_warning>` to print error and warning messages instead of :ref:`print()<class_@GlobalScope_method_print>` or :ref:`print_rich()<class_@GlobalScope_method_print_rich>`. This distinguishes them from print messages used for debugging purposes, while also displaying a stack trace when an error or warning is printed.
 
-\ **Note:** On Windows, only Windows 10 and later correctly displays ANSI escape codes in standard output.
-
 \ **Note:** Output displayed in the editor supports clickable ``[url=address]text[/url]`` tags. The ``[url]`` tag's ``address`` value is handled by :ref:`OS.shell_open()<class_OS_method_shell_open>` when clicked.
 
 .. rst-class:: classref-item-separator
@@ -6739,7 +6737,7 @@ Given a ``seed``, returns a :ref:`PackedInt64Array<class_PackedInt64Array>` of s
 ::
 
     var a = rand_from_seed(4)
-    
+
     print(a[0]) # Prints 2879024997
     print(a[1]) # Prints 4
 
@@ -7046,7 +7044,7 @@ Supported types: :ref:`int<class_int>`, :ref:`float<class_float>`, :ref:`Vector2
     sign(0.0)  # Returns 0
     sign(6.0)  # Returns 1
     sign(NAN)  # Returns 0
-    
+
     sign(Vector3(-6.0, 0.0, 6.0)) # Returns (-1, 0, 1)
 
 \ **Note:** For better type safety, use :ref:`signf()<class_@GlobalScope_method_signf>`, :ref:`signi()<class_@GlobalScope_method_signi>`, :ref:`Vector2.sign()<class_Vector2_method_sign>`, :ref:`Vector2i.sign()<class_Vector2i_method_sign>`, :ref:`Vector3.sign()<class_Vector3_method_sign>`, :ref:`Vector3i.sign()<class_Vector3i_method_sign>`, :ref:`Vector4.sign()<class_Vector4_method_sign>`, or :ref:`Vector4i.sign()<class_Vector4i_method_sign>`.
@@ -7171,7 +7169,7 @@ The returned value is the same type of :ref:`Variant<class_Variant>` as ``step``
 
     snapped(100, 32)  # Returns 96
     snapped(3.14159, 0.01)  # Returns 3.14
-    
+
     snapped(Vector2(34, 70), Vector2(8, 8))  # Returns (32, 72)
 
 See also :ref:`ceil()<class_@GlobalScope_method_ceil>`, :ref:`floor()<class_@GlobalScope_method_floor>`, and :ref:`round()<class_@GlobalScope_method_round>`.
@@ -7495,18 +7493,18 @@ A weak reference to an object is not enough to keep the object alive: when the o
 
 :ref:`Variant<class_Variant>` **wrap**\ (\ value\: :ref:`Variant<class_Variant>`, min\: :ref:`Variant<class_Variant>`, max\: :ref:`Variant<class_Variant>`\ ) :ref:`🔗<class_@GlobalScope_method_wrap>`
 
-Wraps the :ref:`Variant<class_Variant>` ``value`` between ``min`` and ``max``. Can be used for creating loop-alike behavior or infinite surfaces.
+Wraps the :ref:`Variant<class_Variant>` ``value`` between ``min`` and ``max``. ``min`` is *inclusive* while ``max`` is *exclusive*. This can be used for creating loop-like behavior or infinite surfaces.
 
-Variant types :ref:`int<class_int>` and :ref:`float<class_float>` are supported. If any of the arguments is :ref:`float<class_float>` this function returns a :ref:`float<class_float>`, otherwise it returns an :ref:`int<class_int>`.
+Variant types :ref:`int<class_int>` and :ref:`float<class_float>` are supported. If any of the arguments is :ref:`float<class_float>`, this function returns a :ref:`float<class_float>`, otherwise it returns an :ref:`int<class_int>`.
 
 ::
 
     var a = wrap(4, 5, 10)
     # a is 9 (int)
-    
+
     var a = wrap(7, 5, 10)
     # a is 7 (int)
-    
+
     var a = wrap(10.5, 5, 10)
     # a is 5.5 (float)
 
@@ -7520,7 +7518,7 @@ Variant types :ref:`int<class_int>` and :ref:`float<class_float>` are supported.
 
 :ref:`float<class_float>` **wrapf**\ (\ value\: :ref:`float<class_float>`, min\: :ref:`float<class_float>`, max\: :ref:`float<class_float>`\ ) :ref:`🔗<class_@GlobalScope_method_wrapf>`
 
-Wraps the float ``value`` between ``min`` and ``max``. Can be used for creating loop-alike behavior or infinite surfaces.
+Wraps the float ``value`` between ``min`` and ``max``. ``min`` is *inclusive* while ``max`` is *exclusive*. This can be used for creating loop-like behavior or infinite surfaces.
 
 ::
 
@@ -7537,9 +7535,7 @@ Wraps the float ``value`` between ``min`` and ``max``. Can be used for creating
     # Infinite rotation (in radians)
     angle = wrapf(angle + 0.1, -PI, PI)
 
-\ **Note:** If ``min`` is ``0``, this is equivalent to :ref:`fposmod()<class_@GlobalScope_method_fposmod>`, so prefer using that instead.
-
-\ :ref:`wrapf()<class_@GlobalScope_method_wrapf>` is more flexible than using the :ref:`fposmod()<class_@GlobalScope_method_fposmod>` approach by giving the user control over the minimum value.
+\ **Note:** If ``min`` is ``0``, this is equivalent to :ref:`fposmod()<class_@GlobalScope_method_fposmod>`, so prefer using that instead. :ref:`wrapf()<class_@GlobalScope_method_wrapf>` is more flexible than using the :ref:`fposmod()<class_@GlobalScope_method_fposmod>` approach by giving the user control over the minimum value.
 
 .. rst-class:: classref-item-separator
 
@@ -7551,7 +7547,7 @@ Wraps the float ``value`` between ``min`` and ``max``. Can be used for creating
 
 :ref:`int<class_int>` **wrapi**\ (\ value\: :ref:`int<class_int>`, min\: :ref:`int<class_int>`, max\: :ref:`int<class_int>`\ ) :ref:`🔗<class_@GlobalScope_method_wrapi>`
 
-Wraps the integer ``value`` between ``min`` and ``max``. Can be used for creating loop-alike behavior or infinite surfaces.
+Wraps the integer ``value`` between ``min`` and ``max``. ``min`` is *inclusive* while ``max`` is *exclusive*. This can be used for creating loop-like behavior or infinite surfaces.
 
 ::
 
@@ -7564,6 +7560,7 @@ Wraps the integer ``value`` between ``min`` and ``max``. Can be used for creatin
     var result = wrapi(-6, -5, -1)
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 15 - 14
classes/class_aabb.rst

@@ -286,7 +286,7 @@ Returns ``true`` if this bounding box *completely* encloses the ``with`` box. Th
     var a = AABB(Vector3(0, 0, 0), Vector3(4, 4, 4))
     var b = AABB(Vector3(1, 1, 1), Vector3(3, 3, 3))
     var c = AABB(Vector3(2, 2, 2), Vector3(8, 8, 8))
-    
+
     print(a.encloses(a)) # Prints true
     print(a.encloses(b)) # Prints true
     print(a.encloses(c)) # Prints false
@@ -296,7 +296,7 @@ Returns ``true`` if this bounding box *completely* encloses the ``with`` box. Th
     var a = new Aabb(new Vector3(0, 0, 0), new Vector3(4, 4, 4));
     var b = new Aabb(new Vector3(1, 1, 1), new Vector3(3, 3, 3));
     var c = new Aabb(new Vector3(2, 2, 2), new Vector3(8, 8, 8));
-    
+
     GD.Print(a.Encloses(a)); // Prints True
     GD.Print(a.Encloses(b)); // Prints True
     GD.Print(a.Encloses(c)); // Prints False
@@ -321,11 +321,11 @@ Returns a copy of this bounding box expanded to align the edges with the given `
  .. code-tab:: gdscript
 
     var box = AABB(Vector3(0, 0, 0), Vector3(5, 2, 5))
-    
+
     box = box.expand(Vector3(10, 0, 0))
     print(box.position) # Prints (0.0, 0.0, 0.0)
     print(box.size)     # Prints (10.0, 2.0, 5.0)
-    
+
     box = box.expand(Vector3(-5, 0, 5))
     print(box.position) # Prints (-5.0, 0.0, 0.0)
     print(box.size)     # Prints (15.0, 2.0, 5.0)
@@ -333,11 +333,11 @@ Returns a copy of this bounding box expanded to align the edges with the given `
  .. code-tab:: csharp
 
     var box = new Aabb(new Vector3(0, 0, 0), new Vector3(5, 2, 5));
-    
+
     box = box.Expand(new Vector3(10, 0, 0));
     GD.Print(box.Position); // Prints (0, 0, 0)
     GD.Print(box.Size);     // Prints (10, 2, 5)
-    
+
     box = box.Expand(new Vector3(-5, 0, 5));
     GD.Print(box.Position); // Prints (-5, 0, 0)
     GD.Print(box.Size);     // Prints (15, 2, 5)
@@ -386,7 +386,7 @@ Returns the longest normalized axis of this bounding box's :ref:`size<class_AABB
  .. code-tab:: gdscript
 
     var box = AABB(Vector3(0, 0, 0), Vector3(2, 4, 8))
-    
+
     print(box.get_longest_axis())       # Prints (0.0, 0.0, 1.0)
     print(box.get_longest_axis_index()) # Prints 2
     print(box.get_longest_axis_size())  # Prints 8.0
@@ -394,7 +394,7 @@ Returns the longest normalized axis of this bounding box's :ref:`size<class_AABB
  .. code-tab:: csharp
 
     var box = new Aabb(new Vector3(0, 0, 0), new Vector3(2, 4, 8));
-    
+
     GD.Print(box.GetLongestAxis());      // Prints (0, 0, 1)
     GD.Print(box.GetLongestAxisIndex()); // Prints Z
     GD.Print(box.GetLongestAxisSize());  // Prints 8
@@ -449,7 +449,7 @@ Returns the shortest normalized axis of this bounding box's :ref:`size<class_AAB
  .. code-tab:: gdscript
 
     var box = AABB(Vector3(0, 0, 0), Vector3(2, 4, 8))
-    
+
     print(box.get_shortest_axis())       # Prints (1.0, 0.0, 0.0)
     print(box.get_shortest_axis_index()) # Prints 0
     print(box.get_shortest_axis_size())  # Prints 2.0
@@ -457,7 +457,7 @@ Returns the shortest normalized axis of this bounding box's :ref:`size<class_AAB
  .. code-tab:: csharp
 
     var box = new Aabb(new Vector3(0, 0, 0), new Vector3(2, 4, 8));
-    
+
     GD.Print(box.GetShortestAxis());      // Prints (1, 0, 0)
     GD.Print(box.GetShortestAxisIndex()); // Prints X
     GD.Print(box.GetShortestAxisSize());  // Prints 2
@@ -538,7 +538,7 @@ Returns a copy of this bounding box extended on all sides by the given amount ``
     var a = AABB(Vector3(4, 4, 4), Vector3(8, 8, 8)).grow(4)
     print(a.position) # Prints (0.0, 0.0, 0.0)
     print(a.size)     # Prints (16.0, 16.0, 16.0)
-    
+
     var b = AABB(Vector3(0, 0, 0), Vector3(8, 4, 2)).grow(2)
     print(b.position) # Prints (-2.0, -2.0, -2.0)
     print(b.size)     # Prints (12.0, 8.0, 6.0)
@@ -548,7 +548,7 @@ Returns a copy of this bounding box extended on all sides by the given amount ``
     var a = new Aabb(new Vector3(4, 4, 4), new Vector3(8, 8, 8)).Grow(4);
     GD.Print(a.Position); // Prints (0, 0, 0)
     GD.Print(a.Size);     // Prints (16, 16, 16)
-    
+
     var b = new Aabb(new Vector3(0, 0, 0), new Vector3(8, 4, 2)).Grow(2);
     GD.Print(b.Position); // Prints (-2, -2, -2)
     GD.Print(b.Size);     // Prints (12, 8, 6)
@@ -612,7 +612,7 @@ Returns the intersection between this bounding box and ``with``. If the boxes do
 
     var box1 = AABB(Vector3(0, 0, 0), Vector3(5, 2, 8))
     var box2 = AABB(Vector3(2, 0, 2), Vector3(8, 4, 4))
-    
+
     var intersection = box1.intersection(box2)
     print(intersection.position) # Prints (2.0, 0.0, 2.0)
     print(intersection.size)     # Prints (3.0, 2.0, 4.0)
@@ -621,7 +621,7 @@ Returns the intersection between this bounding box and ``with``. If the boxes do
 
     var box1 = new Aabb(new Vector3(0, 0, 0), new Vector3(5, 2, 8));
     var box2 = new Aabb(new Vector3(2, 0, 2), new Vector3(8, 4, 4));
-    
+
     var intersection = box1.Intersection(box2);
     GD.Print(intersection.Position); // Prints (2, 0, 2)
     GD.Print(intersection.Size);     // Prints (3, 2, 4)
@@ -768,6 +768,7 @@ Returns ``true`` if both :ref:`position<class_AABB_property_position>` and :ref:
 \ **Note:** Due to floating-point precision errors, consider using :ref:`is_equal_approx()<class_AABB_method_is_equal_approx>` instead, which is more reliable.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_acceptdialog.rst

@@ -373,6 +373,7 @@ The size of the vertical space between the dialog's content and the button row.
 The panel that fills the background of the window.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 7 - 6
classes/class_aescontext.rst

@@ -27,9 +27,9 @@ This class holds the context information required for encryption and decryption
  .. code-tab:: gdscript
 
     extends Node
-    
+
     var aes = AESContext.new()
-    
+
     func _ready():
         var key = "My secret key!!!" # Key must be either 16 or 32 bytes.
         var data = "My secret text!!" # Data size must be multiple of 16 bytes, apply padding if needed.
@@ -43,7 +43,7 @@ This class holds the context information required for encryption and decryption
         aes.finish()
         # Check ECB
         assert(decrypted == data.to_utf8_buffer())
-    
+
         var iv = "My secret iv!!!!" # IV must be of exactly 16 bytes.
         # Encrypt CBC
         aes.start(AESContext.MODE_CBC_ENCRYPT, key.to_utf8_buffer(), iv.to_utf8_buffer())
@@ -60,11 +60,11 @@ This class holds the context information required for encryption and decryption
 
     using Godot;
     using System.Diagnostics;
-    
+
     public partial class MyNode : Node
     {
         private AesContext _aes = new AesContext();
-    
+
         public override void _Ready()
         {
             string key = "My secret key!!!"; // Key must be either 16 or 32 bytes.
@@ -79,7 +79,7 @@ This class holds the context information required for encryption and decryption
             _aes.Finish();
             // Check ECB
             Debug.Assert(decrypted == data.ToUtf8Buffer());
-    
+
             string iv = "My secret iv!!!!"; // IV must be of exactly 16 bytes.
             // Encrypt CBC
             _aes.Start(AesContext.Mode.EcbEncrypt, key.ToUtf8Buffer(), iv.ToUtf8Buffer());
@@ -227,6 +227,7 @@ Run the desired operation for this AES context. Will return a :ref:`PackedByteAr
 \ **Note:** The size of ``src`` must be a multiple of 16. Apply some padding if needed.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 197 - 0
classes/class_aimmodifier3d.rst

@@ -0,0 +1,197 @@
+:github_url: hide
+
+.. DO NOT EDIT THIS FILE!!!
+.. Generated automatically from Godot engine sources.
+.. Generator: https://github.com/godotengine/godot/tree/master/doc/tools/make_rst.py.
+.. XML source: https://github.com/godotengine/godot/tree/master/doc/classes/AimModifier3D.xml.
+
+.. _class_AimModifier3D:
+
+AimModifier3D
+=============
+
+**Inherits:** :ref:`BoneConstraint3D<class_BoneConstraint3D>` **<** :ref:`SkeletonModifier3D<class_SkeletonModifier3D>` **<** :ref:`Node3D<class_Node3D>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+
+The **AimModifier3D** rotates a bone to look at a reference bone.
+
+.. rst-class:: classref-introduction-group
+
+Description
+-----------
+
+This is a simple version of :ref:`LookAtModifier3D<class_LookAtModifier3D>` that only allows bone to the reference without advanced options such as angle limitation or time-based interpolation.
+
+The feature is simplified, but instead it is implemented with smooth tracking without euler, see :ref:`set_use_euler()<class_AimModifier3D_method_set_use_euler>`.
+
+.. rst-class:: classref-reftable-group
+
+Properties
+----------
+
+.. table::
+   :widths: auto
+
+   +-----------------------+------------------------------------------------------------------+-------+
+   | :ref:`int<class_int>` | :ref:`setting_count<class_AimModifier3D_property_setting_count>` | ``0`` |
+   +-----------------------+------------------------------------------------------------------+-------+
+
+.. rst-class:: classref-reftable-group
+
+Methods
+-------
+
+.. table::
+   :widths: auto
+
+   +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`BoneAxis<enum_SkeletonModifier3D_BoneAxis>` | :ref:`get_forward_axis<class_AimModifier3D_method_get_forward_axis>`\ (\ index\: :ref:`int<class_int>`\ ) |const|                                                   |
+   +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`Axis<enum_Vector3_Axis>`                    | :ref:`get_primary_rotation_axis<class_AimModifier3D_method_get_primary_rotation_axis>`\ (\ index\: :ref:`int<class_int>`\ ) |const|                                 |
+   +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                           | :ref:`is_using_euler<class_AimModifier3D_method_is_using_euler>`\ (\ index\: :ref:`int<class_int>`\ ) |const|                                                       |
+   +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                           | :ref:`is_using_secondary_rotation<class_AimModifier3D_method_is_using_secondary_rotation>`\ (\ index\: :ref:`int<class_int>`\ ) |const|                             |
+   +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                            | :ref:`set_forward_axis<class_AimModifier3D_method_set_forward_axis>`\ (\ index\: :ref:`int<class_int>`, axis\: :ref:`BoneAxis<enum_SkeletonModifier3D_BoneAxis>`\ ) |
+   +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                            | :ref:`set_primary_rotation_axis<class_AimModifier3D_method_set_primary_rotation_axis>`\ (\ index\: :ref:`int<class_int>`, axis\: :ref:`Axis<enum_Vector3_Axis>`\ )  |
+   +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                            | :ref:`set_use_euler<class_AimModifier3D_method_set_use_euler>`\ (\ index\: :ref:`int<class_int>`, enabled\: :ref:`bool<class_bool>`\ )                              |
+   +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                            | :ref:`set_use_secondary_rotation<class_AimModifier3D_method_set_use_secondary_rotation>`\ (\ index\: :ref:`int<class_int>`, enabled\: :ref:`bool<class_bool>`\ )    |
+   +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+.. rst-class:: classref-section-separator
+
+----
+
+.. rst-class:: classref-descriptions-group
+
+Property Descriptions
+---------------------
+
+.. _class_AimModifier3D_property_setting_count:
+
+.. rst-class:: classref-property
+
+:ref:`int<class_int>` **setting_count** = ``0`` :ref:`🔗<class_AimModifier3D_property_setting_count>`
+
+.. rst-class:: classref-property-setget
+
+- |void| **set_setting_count**\ (\ value\: :ref:`int<class_int>`\ )
+- :ref:`int<class_int>` **get_setting_count**\ (\ )
+
+The number of settings in the modifier.
+
+.. rst-class:: classref-section-separator
+
+----
+
+.. rst-class:: classref-descriptions-group
+
+Method Descriptions
+-------------------
+
+.. _class_AimModifier3D_method_get_forward_axis:
+
+.. rst-class:: classref-method
+
+:ref:`BoneAxis<enum_SkeletonModifier3D_BoneAxis>` **get_forward_axis**\ (\ index\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AimModifier3D_method_get_forward_axis>`
+
+Returns the forward axis of the bone.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AimModifier3D_method_get_primary_rotation_axis:
+
+.. rst-class:: classref-method
+
+:ref:`Axis<enum_Vector3_Axis>` **get_primary_rotation_axis**\ (\ index\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AimModifier3D_method_get_primary_rotation_axis>`
+
+Returns the axis of the first rotation. It is enabled only if :ref:`is_using_euler()<class_AimModifier3D_method_is_using_euler>` is ``true``.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AimModifier3D_method_is_using_euler:
+
+.. rst-class:: classref-method
+
+:ref:`bool<class_bool>` **is_using_euler**\ (\ index\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AimModifier3D_method_is_using_euler>`
+
+Returns ``true`` if it provides rotation with using euler.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AimModifier3D_method_is_using_secondary_rotation:
+
+.. rst-class:: classref-method
+
+:ref:`bool<class_bool>` **is_using_secondary_rotation**\ (\ index\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AimModifier3D_method_is_using_secondary_rotation>`
+
+Returns ``true`` if it provides rotation by two axes. It is enabled only if :ref:`is_using_euler()<class_AimModifier3D_method_is_using_euler>` is ``true``.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AimModifier3D_method_set_forward_axis:
+
+.. rst-class:: classref-method
+
+|void| **set_forward_axis**\ (\ index\: :ref:`int<class_int>`, axis\: :ref:`BoneAxis<enum_SkeletonModifier3D_BoneAxis>`\ ) :ref:`🔗<class_AimModifier3D_method_set_forward_axis>`
+
+Sets the forward axis of the bone.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AimModifier3D_method_set_primary_rotation_axis:
+
+.. rst-class:: classref-method
+
+|void| **set_primary_rotation_axis**\ (\ index\: :ref:`int<class_int>`, axis\: :ref:`Axis<enum_Vector3_Axis>`\ ) :ref:`🔗<class_AimModifier3D_method_set_primary_rotation_axis>`
+
+Sets the axis of the first rotation. It is enabled only if :ref:`is_using_euler()<class_AimModifier3D_method_is_using_euler>` is ``true``.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AimModifier3D_method_set_use_euler:
+
+.. rst-class:: classref-method
+
+|void| **set_use_euler**\ (\ index\: :ref:`int<class_int>`, enabled\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_AimModifier3D_method_set_use_euler>`
+
+If sets ``enabled`` to ``true``, it provides rotation with using euler.
+
+If sets ``enabled`` to ``false``, it provides rotation with using rotation by arc generated from the forward axis vector and the vector toward the reference.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AimModifier3D_method_set_use_secondary_rotation:
+
+.. rst-class:: classref-method
+
+|void| **set_use_secondary_rotation**\ (\ index\: :ref:`int<class_int>`, enabled\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_AimModifier3D_method_set_use_secondary_rotation>`
+
+If sets ``enabled`` to ``true``, it provides rotation by two axes. It is enabled only if :ref:`is_using_euler()<class_AimModifier3D_method_is_using_euler>` is ``true``.
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`
+.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)`
+.. |void| replace:: :abbr:`void (No return value.)`

+ 1 - 0
classes/class_animatablebody2d.rst

@@ -58,6 +58,7 @@ Property Descriptions
 If ``true``, the body's movement will be synchronized to the physics frame. This is useful when animating movement via :ref:`AnimationPlayer<class_AnimationPlayer>`, for example on moving platforms. Do **not** use together with :ref:`PhysicsBody2D.move_and_collide()<class_PhysicsBody2D_method_move_and_collide>`.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_animatablebody3d.rst

@@ -69,6 +69,7 @@ Property Descriptions
 If ``true``, the body's movement will be synchronized to the physics frame. This is useful when animating movement via :ref:`AnimationPlayer<class_AnimationPlayer>`, for example on moving platforms. Do **not** use together with :ref:`PhysicsBody3D.move_and_collide()<class_PhysicsBody3D_method_move_and_collide>`.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_animatedsprite2d.rst

@@ -442,6 +442,7 @@ Sets :ref:`frame<class_AnimatedSprite2D_property_frame>` and :ref:`frame_progres
 Stops the currently playing animation. The animation position is reset to ``0`` and the ``custom_speed`` is reset to ``1.0``. See also :ref:`pause()<class_AnimatedSprite2D_method_pause>`.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_animatedsprite3d.rst

@@ -362,6 +362,7 @@ Sets :ref:`frame<class_AnimatedSprite3D_property_frame>` and :ref:`frame_progres
 Stops the currently playing animation. The animation position is reset to ``0`` and the ``custom_speed`` is reset to ``1.0``. See also :ref:`pause()<class_AnimatedSprite3D_method_pause>`.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_animatedtexture.rst

@@ -234,6 +234,7 @@ Assigns a :ref:`Texture2D<class_Texture2D>` to the given frame. Frame IDs start
 You can define any number of textures up to :ref:`MAX_FRAMES<class_AnimatedTexture_constant_MAX_FRAMES>`, but keep in mind that only frames from 0 to :ref:`frames<class_AnimatedTexture_property_frames>` - 1 will be part of the animation.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 2 - 1
classes/class_animation.rst

@@ -1553,9 +1553,10 @@ A ``backward`` mainly affects the direction of key retrieval of the track with :
 
 |void| **value_track_set_update_mode**\ (\ track_idx\: :ref:`int<class_int>`, mode\: :ref:`UpdateMode<enum_Animation_UpdateMode>`\ ) :ref:`🔗<class_Animation_method_value_track_set_update_mode>`
 
-Sets the update mode (see :ref:`UpdateMode<enum_Animation_UpdateMode>`) of a value track.
+Sets the update mode of a value track.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_animationlibrary.rst

@@ -197,6 +197,7 @@ Removes the :ref:`Animation<class_Animation>` with the key ``name``.
 Changes the key of the :ref:`Animation<class_Animation>` associated with the key ``name`` to ``newname``.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 8 - 7
classes/class_animationmixer.rst

@@ -55,7 +55,7 @@ Properties
    +-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+--------------------+
    | :ref:`bool<class_bool>`                                                                 | :ref:`reset_on_save<class_AnimationMixer_property_reset_on_save>`                   | ``true``           |
    +-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+--------------------+
-   | :ref:`bool<class_bool>`                                                                 | :ref:`root_motion_local<class_AnimationMixer_property_root_motion_local>`           |                    |
+   | :ref:`bool<class_bool>`                                                                 | :ref:`root_motion_local<class_AnimationMixer_property_root_motion_local>`           | ``false``          |
    +-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+--------------------+
    | :ref:`NodePath<class_NodePath>`                                                         | :ref:`root_motion_track<class_AnimationMixer_property_root_motion_track>`           | ``NodePath("")``   |
    +-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+--------------------+
@@ -480,7 +480,7 @@ This makes it more convenient to preview and edit animations in the editor, as c
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **root_motion_local** :ref:`🔗<class_AnimationMixer_property_root_motion_local>`
+:ref:`bool<class_bool>` **root_motion_local** = ``false`` :ref:`🔗<class_AnimationMixer_property_root_motion_local>`
 
 .. rst-class:: classref-property-setget
 
@@ -704,7 +704,7 @@ The most basic example is applying position to :ref:`CharacterBody3D<class_Chara
  .. code-tab:: gdscript
 
     var current_rotation
-    
+
     func _process(delta):
         if Input.is_action_just_pressed("animate"):
             current_rotation = get_quaternion()
@@ -773,7 +773,7 @@ For example, if an animation with only one key ``Vector3(0, 0, 0)`` is played in
  .. code-tab:: gdscript
 
     var prev_root_motion_position_accumulator
-    
+
     func _process(delta):
         if Input.is_action_just_pressed("animate"):
             state_machine.travel("Animate")
@@ -840,7 +840,7 @@ For example, if an animation with only one key ``Quaternion(0, 0, 0, 1)`` is pla
  .. code-tab:: gdscript
 
     var prev_root_motion_rotation_accumulator
-    
+
     func _process(delta):
         if Input.is_action_just_pressed("animate"):
             state_machine.travel("Animate")
@@ -878,7 +878,7 @@ The most basic example is applying scale to :ref:`CharacterBody3D<class_Characte
 
     var current_scale = Vector3(1, 1, 1)
     var scale_accum = Vector3(1, 1, 1)
-    
+
     func _process(delta):
         if Input.is_action_just_pressed("animate"):
             current_scale = get_scale()
@@ -909,7 +909,7 @@ For example, if an animation with only one key ``Vector3(1, 1, 1)`` is played in
  .. code-tab:: gdscript
 
     var prev_root_motion_scale_accumulator
-    
+
     func _process(delta):
         if Input.is_action_just_pressed("animate"):
             state_machine.travel("Animate")
@@ -971,6 +971,7 @@ Removes the :ref:`AnimationLibrary<class_AnimationLibrary>` associated with the
 Moves the :ref:`AnimationLibrary<class_AnimationLibrary>` associated with the key ``name`` to the key ``newname``.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 4 - 3
classes/class_animationnode.rst

@@ -349,9 +349,9 @@ Adds an input to the animation node. This is only useful for animation nodes cre
 
 |void| **blend_animation**\ (\ animation\: :ref:`StringName<class_StringName>`, time\: :ref:`float<class_float>`, delta\: :ref:`float<class_float>`, seeked\: :ref:`bool<class_bool>`, is_external_seeking\: :ref:`bool<class_bool>`, blend\: :ref:`float<class_float>`, looped_flag\: :ref:`LoopedFlag<enum_Animation_LoopedFlag>` = 0\ ) :ref:`🔗<class_AnimationNode_method_blend_animation>`
 
-Blend an animation by ``blend`` amount (name must be valid in the linked :ref:`AnimationPlayer<class_AnimationPlayer>`). A ``time`` and ``delta`` may be passed, as well as whether ``seeked`` happened.
+Blends an animation by ``blend`` amount (name must be valid in the linked :ref:`AnimationPlayer<class_AnimationPlayer>`). A ``time`` and ``delta`` may be passed, as well as whether ``seeked`` happened.
 
-A ``looped_flag`` is used by internal processing immediately after the loop. See also :ref:`LoopedFlag<enum_Animation_LoopedFlag>`.
+A ``looped_flag`` is used by internal processing immediately after the loop.
 
 .. rst-class:: classref-item-separator
 
@@ -363,7 +363,7 @@ A ``looped_flag`` is used by internal processing immediately after the loop. See
 
 :ref:`float<class_float>` **blend_input**\ (\ input_index\: :ref:`int<class_int>`, time\: :ref:`float<class_float>`, seek\: :ref:`bool<class_bool>`, is_external_seeking\: :ref:`bool<class_bool>`, blend\: :ref:`float<class_float>`, filter\: :ref:`FilterAction<enum_AnimationNode_FilterAction>` = 0, sync\: :ref:`bool<class_bool>` = true, test_only\: :ref:`bool<class_bool>` = false\ ) :ref:`🔗<class_AnimationNode_method_blend_input>`
 
-Blend an input. This is only useful for animation nodes created for an :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>`. The ``time`` parameter is a relative delta, unless ``seek`` is ``true``, in which case it is absolute. A filter mode may be optionally passed (see :ref:`FilterAction<enum_AnimationNode_FilterAction>` for options).
+Blends an input. This is only useful for animation nodes created for an :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>`. The ``time`` parameter is a relative delta, unless ``seek`` is ``true``, in which case it is absolute. A filter mode may be optionally passed.
 
 .. rst-class:: classref-item-separator
 
@@ -512,6 +512,7 @@ Sets the name of the input at the given ``input`` index. If the setting fails, r
 Sets a custom parameter. These are used as local memory, because resources can be reused across the tree or scenes.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_animationnodeadd2.rst

@@ -33,6 +33,7 @@ Tutorials
 - :doc:`Using AnimationTree <../tutorials/animation/animation_tree>`
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_animationnodeadd3.rst

@@ -41,6 +41,7 @@ Tutorials
 - `Third Person Shooter (TPS) Demo <https://godotengine.org/asset-library/asset/2710>`__
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_animationnodeanimation.rst

@@ -241,6 +241,7 @@ If :ref:`use_custom_timeline<class_AnimationNodeAnimation_property_use_custom_ti
 If ``true``, :ref:`AnimationNode<class_AnimationNode>` provides an animation based on the :ref:`Animation<class_Animation>` resource with some parameters adjusted.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_animationnodeblend2.rst

@@ -35,6 +35,7 @@ Tutorials
 - `Third Person Shooter (TPS) Demo <https://godotengine.org/asset-library/asset/2710>`__
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_animationnodeblend3.rst

@@ -39,6 +39,7 @@ Tutorials
 - :doc:`Using AnimationTree <../tutorials/animation/animation_tree>`
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 2 - 1
classes/class_animationnodeblendspace1d.rst

@@ -137,7 +137,7 @@ Property Descriptions
 - |void| **set_blend_mode**\ (\ value\: :ref:`BlendMode<enum_AnimationNodeBlendSpace1D_BlendMode>`\ )
 - :ref:`BlendMode<enum_AnimationNodeBlendSpace1D_BlendMode>` **get_blend_mode**\ (\ )
 
-Controls the interpolation between animations. See :ref:`BlendMode<enum_AnimationNodeBlendSpace1D_BlendMode>` constants.
+Controls the interpolation between animations.
 
 .. rst-class:: classref-item-separator
 
@@ -316,6 +316,7 @@ Changes the :ref:`AnimationNode<class_AnimationNode>` referenced by the point at
 Updates the position of the point at index ``point`` on the blend axis.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 2 - 1
classes/class_animationnodeblendspace2d.rst

@@ -185,7 +185,7 @@ If ``true``, the blend space is triangulated automatically. The mesh updates eve
 - |void| **set_blend_mode**\ (\ value\: :ref:`BlendMode<enum_AnimationNodeBlendSpace2D_BlendMode>`\ )
 - :ref:`BlendMode<enum_AnimationNodeBlendSpace2D_BlendMode>` **get_blend_mode**\ (\ )
 
-Controls the interpolation between animations. See :ref:`BlendMode<enum_AnimationNodeBlendSpace2D_BlendMode>` constants.
+Controls the interpolation between animations.
 
 .. rst-class:: classref-item-separator
 
@@ -429,6 +429,7 @@ Changes the :ref:`AnimationNode<class_AnimationNode>` referenced by the point at
 Updates the position of the point at index ``point`` in the blend space.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_animationnodeblendtree.rst

@@ -294,6 +294,7 @@ Changes the name of a sub animation node.
 Modifies the position of a sub animation node.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 9 - 8
classes/class_animationnodeextension.rst

@@ -31,13 +31,13 @@ Methods
 .. table::
    :widths: auto
 
-   +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`PackedFloat32Array<class_PackedFloat32Array>` | :ref:`_process_animation_node<class_AnimationNodeExtension_private_method__process_animation_node>`\ (\ playback_info\: :ref:`PackedFloat64Array<class_PackedFloat64Array>`, test_only\: :ref:`bool<class_bool>`\ ) |virtual| |
-   +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`float<class_float>`                           | :ref:`get_remaining_time<class_AnimationNodeExtension_method_get_remaining_time>`\ (\ node_info\: :ref:`PackedFloat32Array<class_PackedFloat32Array>`, break_loop\: :ref:`bool<class_bool>`\ ) |static|                       |
-   +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`bool<class_bool>`                             | :ref:`is_looping<class_AnimationNodeExtension_method_is_looping>`\ (\ node_info\: :ref:`PackedFloat32Array<class_PackedFloat32Array>`\ ) |static|                                                                             |
-   +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`PackedFloat32Array<class_PackedFloat32Array>` | :ref:`_process_animation_node<class_AnimationNodeExtension_private_method__process_animation_node>`\ (\ playback_info\: :ref:`PackedFloat64Array<class_PackedFloat64Array>`, test_only\: :ref:`bool<class_bool>`\ ) |virtual| |required| |
+   +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`float<class_float>`                           | :ref:`get_remaining_time<class_AnimationNodeExtension_method_get_remaining_time>`\ (\ node_info\: :ref:`PackedFloat32Array<class_PackedFloat32Array>`, break_loop\: :ref:`bool<class_bool>`\ ) |static|                                  |
+   +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                             | :ref:`is_looping<class_AnimationNodeExtension_method_is_looping>`\ (\ node_info\: :ref:`PackedFloat32Array<class_PackedFloat32Array>`\ ) |static|                                                                                        |
+   +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 .. rst-class:: classref-section-separator
 
@@ -52,7 +52,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-:ref:`PackedFloat32Array<class_PackedFloat32Array>` **_process_animation_node**\ (\ playback_info\: :ref:`PackedFloat64Array<class_PackedFloat64Array>`, test_only\: :ref:`bool<class_bool>`\ ) |virtual| :ref:`🔗<class_AnimationNodeExtension_private_method__process_animation_node>`
+:ref:`PackedFloat32Array<class_PackedFloat32Array>` **_process_animation_node**\ (\ playback_info\: :ref:`PackedFloat64Array<class_PackedFloat64Array>`, test_only\: :ref:`bool<class_bool>`\ ) |virtual| |required| :ref:`🔗<class_AnimationNodeExtension_private_method__process_animation_node>`
 
 A version of the :ref:`AnimationNode._process()<class_AnimationNode_private_method__process>` method that is meant to be overridden by custom nodes. It returns a :ref:`PackedFloat32Array<class_PackedFloat32Array>` with the processed animation data.
 
@@ -85,6 +85,7 @@ Returns the animation's remaining time for the given node info. For looping anim
 Returns ``true`` if the animation for the given ``node_info`` is looping.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 9 - 8
classes/class_animationnodeoneshot.rst

@@ -32,22 +32,22 @@ After setting the request and changing the animation playback, the one-shot node
     animation_tree.set("parameters/OneShot/request", AnimationNodeOneShot.ONE_SHOT_REQUEST_FIRE)
     # Alternative syntax (same result as above).
     animation_tree["parameters/OneShot/request"] = AnimationNodeOneShot.ONE_SHOT_REQUEST_FIRE
-    
+
     # Abort child animation connected to "shot" port.
     animation_tree.set("parameters/OneShot/request", AnimationNodeOneShot.ONE_SHOT_REQUEST_ABORT)
     # Alternative syntax (same result as above).
     animation_tree["parameters/OneShot/request"] = AnimationNodeOneShot.ONE_SHOT_REQUEST_ABORT
-    
+
     # Abort child animation with fading out connected to "shot" port.
     animation_tree.set("parameters/OneShot/request", AnimationNodeOneShot.ONE_SHOT_REQUEST_FADE_OUT)
     # Alternative syntax (same result as above).
     animation_tree["parameters/OneShot/request"] = AnimationNodeOneShot.ONE_SHOT_REQUEST_FADE_OUT
-    
+
     # Get current state (read-only).
     animation_tree.get("parameters/OneShot/active")
     # Alternative syntax (same result as above).
     animation_tree["parameters/OneShot/active"]
-    
+
     # Get current internal state (read-only).
     animation_tree.get("parameters/OneShot/internal_active")
     # Alternative syntax (same result as above).
@@ -57,16 +57,16 @@ After setting the request and changing the animation playback, the one-shot node
 
     // Play child animation connected to "shot" port.
     animationTree.Set("parameters/OneShot/request", (int)AnimationNodeOneShot.OneShotRequest.Fire);
-    
+
     // Abort child animation connected to "shot" port.
     animationTree.Set("parameters/OneShot/request", (int)AnimationNodeOneShot.OneShotRequest.Abort);
-    
+
     // Abort child animation with fading out connected to "shot" port.
     animationTree.Set("parameters/OneShot/request", (int)AnimationNodeOneShot.OneShotRequest.FadeOut);
-    
+
     // Get current state (read-only).
     animationTree.Get("parameters/OneShot/active");
-    
+
     // Get current internal state (read-only).
     animationTree.Get("parameters/OneShot/internal_active");
 
@@ -347,6 +347,7 @@ The fade-out duration. For example, setting this to ``1.0`` for a 5 second lengt
 The blend type.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_animationnodeoutput.rst

@@ -33,6 +33,7 @@ Tutorials
 - `Third Person Shooter (TPS) Demo <https://godotengine.org/asset-library/asset/2710>`__
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_animationnodestatemachine.rst

@@ -452,6 +452,7 @@ Sets the draw offset of the graph. Used for display in the editor.
 Sets the animation node's coordinates. Used for display in the editor.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 32 - 0
classes/class_animationnodestatemachineplayback.rst

@@ -91,6 +91,37 @@ Methods
 
 .. rst-class:: classref-descriptions-group
 
+Signals
+-------
+
+.. _class_AnimationNodeStateMachinePlayback_signal_state_finished:
+
+.. rst-class:: classref-signal
+
+**state_finished**\ (\ state\: :ref:`StringName<class_StringName>`\ ) :ref:`🔗<class_AnimationNodeStateMachinePlayback_signal_state_finished>`
+
+Emitted when the ``state`` finishes playback. If ``state`` is a state machine set to grouped mode, its signals are passed through with its name prefixed.
+
+If there is a crossfade, this will be fired when the influence of the :ref:`get_fading_from_node()<class_AnimationNodeStateMachinePlayback_method_get_fading_from_node>` animation is no longer present.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationNodeStateMachinePlayback_signal_state_started:
+
+.. rst-class:: classref-signal
+
+**state_started**\ (\ state\: :ref:`StringName<class_StringName>`\ ) :ref:`🔗<class_AnimationNodeStateMachinePlayback_signal_state_started>`
+
+Emitted when the ``state`` starts playback. If ``state`` is a state machine set to grouped mode, its signals are passed through with its name prefixed.
+
+.. rst-class:: classref-section-separator
+
+----
+
+.. rst-class:: classref-descriptions-group
+
 Method Descriptions
 -------------------
 
@@ -221,6 +252,7 @@ If the path does not connect from the current state, the animation will play aft
 If ``reset_on_teleport`` is ``true``, the animation is played from the beginning when the travel cause a teleportation.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_animationnodestatemachinetransition.rst

@@ -322,6 +322,7 @@ The time to cross-fade between this state and the next.
 \ **Note:** :ref:`AnimationNodeStateMachine<class_AnimationNodeStateMachine>` transitions the current state immediately after the start of the fading. The precise remaining time can only be inferred from the main animation. When :ref:`AnimationNodeOutput<class_AnimationNodeOutput>` is considered as the most upstream, so the :ref:`xfade_time<class_AnimationNodeStateMachineTransition_property_xfade_time>` is not scaled depending on the downstream delta. See also :ref:`AnimationNodeOneShot.fadeout_time<class_AnimationNodeOneShot_property_fadeout_time>`.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_animationnodesub2.rst

@@ -35,6 +35,7 @@ Tutorials
 - :doc:`AnimationTree <../tutorials/animation/animation_tree>`
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_animationnodesync.rst

@@ -67,6 +67,7 @@ If ``false``, the blended animations' frame are stopped when the blend value is
 If ``true``, forcing the blended animations to advance frame.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_animationnodetimescale.rst

@@ -31,6 +31,7 @@ Tutorials
 - `3D Platformer Demo <https://godotengine.org/asset-library/asset/2748>`__
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 3 - 2
classes/class_animationnodetimeseek.rst

@@ -32,7 +32,7 @@ After setting the time and changing the animation playback, the time seek node a
     animation_tree.set("parameters/TimeSeek/seek_request", 0.0)
     # Alternative syntax (same result as above).
     animation_tree["parameters/TimeSeek/seek_request"] = 0.0
-    
+
     # Play child animation from 12 second timestamp.
     animation_tree.set("parameters/TimeSeek/seek_request", 12.0)
     # Alternative syntax (same result as above).
@@ -42,7 +42,7 @@ After setting the time and changing the animation playback, the time seek node a
 
     // Play child animation from the start.
     animationTree.Set("parameters/TimeSeek/seek_request", 0.0);
-    
+
     // Play child animation from 12 second timestamp.
     animationTree.Set("parameters/TimeSeek/seek_request", 12.0);
 
@@ -90,6 +90,7 @@ Property Descriptions
 If ``true``, some processes are executed to handle keys between seeks, such as calculating root motion and finding the nearest discrete key.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 5 - 4
classes/class_animationnodetransition.rst

@@ -34,12 +34,12 @@ After setting the request and changing the animation playback, the transition no
     animation_tree.set("parameters/Transition/transition_request", "state_2")
     # Alternative syntax (same result as above).
     animation_tree["parameters/Transition/transition_request"] = "state_2"
-    
+
     # Get current state name (read-only).
     animation_tree.get("parameters/Transition/current_state")
     # Alternative syntax (same result as above).
     animation_tree["parameters/Transition/current_state"]
-    
+
     # Get current state index (read-only).
     animation_tree.get("parameters/Transition/current_index")
     # Alternative syntax (same result as above).
@@ -49,10 +49,10 @@ After setting the request and changing the animation playback, the transition no
 
     // Play child animation connected to "state_2" port.
     animationTree.Set("parameters/Transition/transition_request", "state_2");
-    
+
     // Get current state name (read-only).
     animationTree.Get("parameters/Transition/current_state");
-    
+
     // Get current state index (read-only).
     animationTree.Get("parameters/Transition/current_index");
 
@@ -262,6 +262,7 @@ If ``true``, breaks the loop at the end of the loop cycle for transition, even i
 If ``true``, the destination animation is restarted when the animation transitions.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_animationplayer.rst

@@ -902,6 +902,7 @@ If ``keep_state`` is ``true``, the animation state is not updated visually.
 \ **Note:** The method / audio / animation playback tracks will not be processed by this method.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_animationrootnode.rst

@@ -33,6 +33,7 @@ Tutorials
 - :doc:`Using AnimationTree <../tutorials/animation/animation_tree>`
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_animationtree.rst

@@ -218,6 +218,7 @@ Returns the process notification in which to update animations.
 Sets the process notification in which to update animations.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 6 - 5
classes/class_area2d.rst

@@ -155,7 +155,7 @@ Emitted when a :ref:`Shape2D<class_Shape2D>` of the received ``area`` enters a s
 
     var other_shape_owner = area.shape_find_owner(area_shape_index)
     var other_shape_node = area.shape_owner_get_owner(other_shape_owner)
-    
+
     var local_shape_owner = shape_find_owner(local_shape_index)
     var local_shape_node = shape_owner_get_owner(local_shape_owner)
 
@@ -222,7 +222,7 @@ Emitted when a :ref:`Shape2D<class_Shape2D>` of the received ``body`` enters a s
 
     var body_shape_owner = body.shape_find_owner(body_shape_index)
     var body_shape_node = body.shape_owner_get_owner(body_shape_owner)
-    
+
     var local_shape_owner = shape_find_owner(local_shape_index)
     var local_shape_node = shape_owner_get_owner(local_shape_owner)
 
@@ -336,7 +336,7 @@ See :ref:`ProjectSettings.physics/2d/default_angular_damp<class_ProjectSettings_
 - |void| **set_angular_damp_space_override_mode**\ (\ value\: :ref:`SpaceOverride<enum_Area2D_SpaceOverride>`\ )
 - :ref:`SpaceOverride<enum_Area2D_SpaceOverride>` **get_angular_damp_space_override_mode**\ (\ )
 
-Override mode for angular damping calculations within this area. See :ref:`SpaceOverride<enum_Area2D_SpaceOverride>` for possible values.
+Override mode for angular damping calculations within this area.
 
 .. rst-class:: classref-item-separator
 
@@ -474,7 +474,7 @@ The above is true only when the unit distance is a positive number. When this is
 - |void| **set_gravity_space_override_mode**\ (\ value\: :ref:`SpaceOverride<enum_Area2D_SpaceOverride>`\ )
 - :ref:`SpaceOverride<enum_Area2D_SpaceOverride>` **get_gravity_space_override_mode**\ (\ )
 
-Override mode for gravity calculations within this area. See :ref:`SpaceOverride<enum_Area2D_SpaceOverride>` for possible values.
+Override mode for gravity calculations within this area.
 
 .. rst-class:: classref-item-separator
 
@@ -510,7 +510,7 @@ See :ref:`ProjectSettings.physics/2d/default_linear_damp<class_ProjectSettings_p
 - |void| **set_linear_damp_space_override_mode**\ (\ value\: :ref:`SpaceOverride<enum_Area2D_SpaceOverride>`\ )
 - :ref:`SpaceOverride<enum_Area2D_SpaceOverride>` **get_linear_damp_space_override_mode**\ (\ )
 
-Override mode for linear damping calculations within this area. See :ref:`SpaceOverride<enum_Area2D_SpaceOverride>` for possible values.
+Override mode for linear damping calculations within this area.
 
 .. rst-class:: classref-item-separator
 
@@ -655,6 +655,7 @@ Returns ``true`` if the given physics body intersects or overlaps this **Area2D*
 The ``body`` argument can either be a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or a :ref:`TileMap<class_TileMap>` instance. While TileMaps are not physics bodies themselves, they register their tiles with collision shapes as a virtual physics body.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 6 - 5
classes/class_area3d.rst

@@ -169,7 +169,7 @@ Emitted when a :ref:`Shape3D<class_Shape3D>` of the received ``area`` enters a s
 
     var other_shape_owner = area.shape_find_owner(area_shape_index)
     var other_shape_node = area.shape_owner_get_owner(other_shape_owner)
-    
+
     var local_shape_owner = shape_find_owner(local_shape_index)
     var local_shape_node = shape_owner_get_owner(local_shape_owner)
 
@@ -236,7 +236,7 @@ Emitted when a :ref:`Shape3D<class_Shape3D>` of the received ``body`` enters a s
 
     var body_shape_owner = body.shape_find_owner(body_shape_index)
     var body_shape_node = body.shape_owner_get_owner(body_shape_owner)
-    
+
     var local_shape_owner = shape_find_owner(local_shape_index)
     var local_shape_node = shape_owner_get_owner(local_shape_owner)
 
@@ -350,7 +350,7 @@ See :ref:`ProjectSettings.physics/3d/default_angular_damp<class_ProjectSettings_
 - |void| **set_angular_damp_space_override_mode**\ (\ value\: :ref:`SpaceOverride<enum_Area3D_SpaceOverride>`\ )
 - :ref:`SpaceOverride<enum_Area3D_SpaceOverride>` **get_angular_damp_space_override_mode**\ (\ )
 
-Override mode for angular damping calculations within this area. See :ref:`SpaceOverride<enum_Area3D_SpaceOverride>` for possible values.
+Override mode for angular damping calculations within this area.
 
 .. rst-class:: classref-item-separator
 
@@ -488,7 +488,7 @@ The above is true only when the unit distance is a positive number. When this is
 - |void| **set_gravity_space_override_mode**\ (\ value\: :ref:`SpaceOverride<enum_Area3D_SpaceOverride>`\ )
 - :ref:`SpaceOverride<enum_Area3D_SpaceOverride>` **get_gravity_space_override_mode**\ (\ )
 
-Override mode for gravity calculations within this area. See :ref:`SpaceOverride<enum_Area3D_SpaceOverride>` for possible values.
+Override mode for gravity calculations within this area.
 
 .. rst-class:: classref-item-separator
 
@@ -524,7 +524,7 @@ See :ref:`ProjectSettings.physics/3d/default_linear_damp<class_ProjectSettings_p
 - |void| **set_linear_damp_space_override_mode**\ (\ value\: :ref:`SpaceOverride<enum_Area3D_SpaceOverride>`\ )
 - :ref:`SpaceOverride<enum_Area3D_SpaceOverride>` **get_linear_damp_space_override_mode**\ (\ )
 
-Override mode for linear damping calculations within this area. See :ref:`SpaceOverride<enum_Area3D_SpaceOverride>` for possible values.
+Override mode for linear damping calculations within this area.
 
 .. rst-class:: classref-item-separator
 
@@ -794,6 +794,7 @@ Returns ``true`` if the given physics body intersects or overlaps this **Area3D*
 The ``body`` argument can either be a :ref:`PhysicsBody3D<class_PhysicsBody3D>` or a :ref:`GridMap<class_GridMap>` instance. While GridMaps are not physics body themselves, they register their tiles with collision shapes as a virtual physics body.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 36 - 33
classes/class_array.rst

@@ -28,7 +28,7 @@ An array data structure that can contain a sequence of elements of any :ref:`Var
     print(array[0])  # Prints "First"
     print(array[2])  # Prints 3
     print(array[-1]) # Prints "Last"
-    
+
     array[1] = "Second"
     print(array[1])  # Prints "Second"
     print(array[-3]) # Prints "Second"
@@ -39,7 +39,7 @@ An array data structure that can contain a sequence of elements of any :ref:`Var
     GD.Print(array[0]); // Prints "First"
     GD.Print(array[2]); // Prints 3
     GD.Print(array[^1]); // Prints "Last"
-    
+
     array[1] = "Second";
     GD.Print(array[1]); // Prints "Second"
     GD.Print(array[^3]); // Prints "Second"
@@ -269,10 +269,10 @@ If ``type`` is not :ref:`@GlobalScope.TYPE_OBJECT<class_@GlobalScope_constant_TY
 
     class_name Sword
     extends Node
-    
+
     class Stats:
         pass
-    
+
     func _ready():
         var a = Array([], TYPE_INT, "", null)               # Array[int]
         var b = Array([], TYPE_OBJECT, "Node", null)        # Array[Node]
@@ -287,7 +287,7 @@ In GDScript, this constructor is usually not necessary, as it is possible to cre
 
     var numbers: Array[float] = []
     var children: Array[Node] = [$Node, $Sprite2D, $RigidBody3D]
-    
+
     var integers: Array[int] = [0.2, 4.5, -2.0]
     print(integers) # Prints [0, 4, -2]
 
@@ -427,13 +427,13 @@ The ``method`` should take one :ref:`Variant<class_Variant>` parameter (the curr
 
     func greater_than_5(number):
         return number > 5
-    
+
     func _ready():
         print([6, 10, 6].all(greater_than_5)) # Prints true (3/3 elements evaluate to true).
         print([4, 10, 4].all(greater_than_5)) # Prints false (1/3 elements evaluate to true).
         print([4, 4, 4].all(greater_than_5))  # Prints false (0/3 elements evaluate to true).
         print([].all(greater_than_5))         # Prints true (0/0 elements evaluate to true).
-    
+
         # Same as the first line above, but using a lambda function.
         print([6, 10, 6].all(func(element): return element > 5)) # Prints true
 
@@ -443,7 +443,7 @@ The ``method`` should take one :ref:`Variant<class_Variant>` parameter (the curr
     {
         return number > 5;
     }
-    
+
     public override void _Ready()
     {
         // Prints True (3/3 elements evaluate to true).
@@ -454,7 +454,7 @@ The ``method`` should take one :ref:`Variant<class_Variant>` parameter (the curr
         GD.Print(new Godot.Collections.Array>int< { 4, 4, 4 }.All(GreaterThan5));
         // Prints True (0/0 elements evaluate to true).
         GD.Print(new Godot.Collections.Array>int< { }.All(GreaterThan5));
-    
+
         // Same as the first line above, but using a lambda function.
         GD.Print(new Godot.Collections.Array>int< { 6, 10, 6 }.All(element => element > 5)); // Prints True
     }
@@ -485,13 +485,13 @@ The ``method`` should take one :ref:`Variant<class_Variant>` parameter (the curr
 
     func greater_than_5(number):
         return number > 5
-    
+
     func _ready():
         print([6, 10, 6].any(greater_than_5)) # Prints true (3 elements evaluate to true).
         print([4, 10, 4].any(greater_than_5)) # Prints true (1 elements evaluate to true).
         print([4, 4, 4].any(greater_than_5))  # Prints false (0 elements evaluate to true).
         print([].any(greater_than_5))         # Prints false (0 elements evaluate to true).
-    
+
         # Same as the first line above, but using a lambda function.
         print([6, 10, 6].any(func(number): return number > 5)) # Prints true
 
@@ -576,10 +576,10 @@ If ``before`` is ``true`` (as by default), the returned index comes before all e
 
     var numbers = [2, 4, 8, 10]
     var idx = numbers.bsearch(7)
-    
+
     numbers.insert(idx, 7)
     print(numbers) # Prints [2, 4, 7, 8, 10]
-    
+
     var fruits = ["Apple", "Lemon", "Lemon", "Orange"]
     print(fruits.bsearch("Lemon", true))  # Prints 1, points at the first "Lemon".
     print(fruits.bsearch("Lemon", false)) # Prints 3, points at "Orange".
@@ -608,18 +608,18 @@ If ``before`` is ``true`` (as by default), the returned index comes before all e
         if a[1] < b[1]:
             return true
         return false
-    
+
     func _ready():
         var my_items = [["Tomato", 2], ["Kiwi", 5], ["Rice", 9]]
-    
+
         var apple = ["Apple", 5]
         # "Apple" is inserted before "Kiwi".
         my_items.insert(my_items.bsearch_custom(apple, sort_by_amount, true), apple)
-    
+
         var banana = ["Banana", 5]
         # "Banana" is inserted after "Kiwi".
         my_items.insert(my_items.bsearch_custom(banana, sort_by_amount, false), banana)
-    
+
         # Prints [["Tomato", 2], ["Apple", 5], ["Kiwi", 5], ["Banana", 5], ["Rice", 9]]
         print(my_items)
 
@@ -750,10 +750,10 @@ The ``method`` receives one of the array elements as an argument, and should ret
 
     func is_even(number):
         return number % 2 == 0
-    
+
     func _ready():
         print([1, 4, 5, 8].filter(is_even)) # Prints [4, 8]
-    
+
         # Same as above, but using a lambda function.
         print([1, 4, 5, 8].filter(func(number): return number % 2 == 0))
 
@@ -798,7 +798,7 @@ Returns the index of the **first** element in the array that causes ``method`` t
 
     func is_even(number):
         return number % 2 == 0
-    
+
     func _ready():
         print([1, 3, 4, 7].find_custom(is_even.bind())) # Prints 2
 
@@ -828,7 +828,9 @@ Returns the first element of the array. If the array is empty, fails and returns
 
 :ref:`Variant<class_Variant>` **get**\ (\ index\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_Array_method_get>`
 
-Returns the element at the given ``index`` in the array. This is the same as using the ``[]`` operator (``array[index]``).
+Returns the element at the given ``index`` in the array. If ``index`` out-of-bounds or negative, this method fails and returns ``null``.
+
+This method is similar (but not identical) to the ``[]`` operator. Most notably, when this method fails, it doesn't pause project execution if run from the editor.
 
 .. rst-class:: classref-item-separator
 
@@ -1027,10 +1029,10 @@ The ``method`` should take one :ref:`Variant<class_Variant>` parameter (the curr
 
     func double(number):
         return number * 2
-    
+
     func _ready():
         print([1, 2, 3].map(double)) # Prints [2, 4, 6]
-    
+
         # Same as above, but using a lambda function.
         print([1, 2, 3].map(func(element): return element * 2))
 
@@ -1175,11 +1177,11 @@ The ``method`` takes two arguments: the current value of ``accum`` and the curre
 
     func sum(accum, number):
         return accum + number
-    
+
     func _ready():
         print([1, 2, 3].reduce(sum, 0))  # Prints 6
         print([1, 2, 3].reduce(sum, 10)) # Prints 16
-    
+
         # Same as above, but using a lambda function.
         print([1, 2, 3].reduce(func(accum, number): return accum + number, 10))
 
@@ -1189,10 +1191,10 @@ If :ref:`max()<class_Array_method_max>` is not desirable, this method may also b
 
     func _ready():
         var arr = [Vector2i(5, 0), Vector2i(3, 4), Vector2i(1, 2)]
-    
+
         var longest_vec = arr.reduce(func(max, vec): return vec if is_length_greater(vec, max) else max)
         print(longest_vec) # Prints (3, 4)
-    
+
     func is_length_greater(a, b):
         return a.length() > b.length()
 
@@ -1202,7 +1204,7 @@ This method can also be used to count how many elements in an array satisfy a ce
 
     func is_even(number):
         return number % 2 == 0
-    
+
     func _ready():
         var arr = [1, 2, 3, 4, 5]
         # If the current element is even, increment count, otherwise leave count the same.
@@ -1335,16 +1337,16 @@ If either ``begin`` or ``end`` are negative, their value is relative to the end
 
 If ``step`` is negative, this method iterates through the array in reverse, returning a slice ordered backwards. For this to work, ``begin`` must be greater than ``end``.
 
-If ``deep`` is ``true``, all nested **Array** and :ref:`Dictionary<class_Dictionary>` elements in the slice are duplicated from the original, recursively. See also :ref:`duplicate()<class_Array_method_duplicate>`).
+If ``deep`` is ``true``, all nested **Array** and :ref:`Dictionary<class_Dictionary>` elements in the slice are duplicated from the original, recursively. See also :ref:`duplicate()<class_Array_method_duplicate>`.
 
 ::
 
     var letters = ["A", "B", "C", "D", "E", "F"]
-    
+
     print(letters.slice(0, 2))  # Prints ["A", "B"]
     print(letters.slice(2, -2)) # Prints ["C", "D"]
     print(letters.slice(-2, 6)) # Prints ["E", "F"]
-    
+
     print(letters.slice(0, 6, 2))  # Prints ["A", "C", "E"]
     print(letters.slice(4, 1, -1)) # Prints ["E", "D", "C"]
 
@@ -1399,12 +1401,12 @@ Sorts the array using a custom :ref:`Callable<class_Callable>`.
         if a[1] < b[1]:
             return true
         return false
-    
+
     func _ready():
         var my_items = [["Tomato", 5], ["Apple", 9], ["Rice", 4]]
         my_items.sort_custom(sort_ascending)
         print(my_items) # Prints [["Rice", 4], ["Tomato", 5], ["Apple", 9]]
-    
+
         # Sort descending, using a lambda function.
         my_items.sort_custom(func(a, b): return a[1] > b[1])
         print(my_items) # Prints [["Apple", 9], ["Tomato", 5], ["Rice", 4]]
@@ -1553,6 +1555,7 @@ If all searched elements are equal, returns ``true`` if this array's size is gre
 Returns the :ref:`Variant<class_Variant>` element at the specified ``index``. Arrays start at index 0. If ``index`` is greater or equal to ``0``, the element is fetched starting from the beginning of the array. If ``index`` is a negative value, the element is fetched starting from the end. Accessing an array out-of-bounds will cause a run-time error, pausing the project execution if run from the editor.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 6 - 5
classes/class_arraymesh.rst

@@ -32,13 +32,13 @@ The most basic example is the creation of a single triangle:
     vertices.push_back(Vector3(0, 1, 0))
     vertices.push_back(Vector3(1, 0, 0))
     vertices.push_back(Vector3(0, 0, 1))
-    
+
     # Initialize the ArrayMesh.
     var arr_mesh = ArrayMesh.new()
     var arrays = []
     arrays.resize(Mesh.ARRAY_MAX)
     arrays[Mesh.ARRAY_VERTEX] = vertices
-    
+
     # Create the Mesh.
     arr_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arrays)
     var m = MeshInstance3D.new()
@@ -52,13 +52,13 @@ The most basic example is the creation of a single triangle:
         new Vector3(1, 0, 0),
         new Vector3(0, 0, 1),
     ];
-    
+
     // Initialize the ArrayMesh.
     var arrMesh = new ArrayMesh();
     Godot.Collections.Array arrays = [];
     arrays.Resize((int)Mesh.ArrayType.Max);
     arrays[(int)Mesh.ArrayType.Vertex] = vertices;
-    
+
     // Create the Mesh.
     arrMesh.AddSurfaceFromArrays(Mesh.PrimitiveType.Triangles, arrays);
     var m = new MeshInstance3D();
@@ -165,7 +165,7 @@ Property Descriptions
 - |void| **set_blend_shape_mode**\ (\ value\: :ref:`BlendShapeMode<enum_Mesh_BlendShapeMode>`\ )
 - :ref:`BlendShapeMode<enum_Mesh_BlendShapeMode>` **get_blend_shape_mode**\ (\ )
 
-Sets the blend shape mode to one of :ref:`BlendShapeMode<enum_Mesh_BlendShapeMode>`.
+The blend shape mode.
 
 .. rst-class:: classref-item-separator
 
@@ -467,6 +467,7 @@ Sets a name for a given surface.
 	There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`!
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_arrayoccluder3d.rst

@@ -121,6 +121,7 @@ Method Descriptions
 Sets :ref:`indices<class_ArrayOccluder3D_property_indices>` and :ref:`vertices<class_ArrayOccluder3D_property_vertices>`, while updating the final occluder only once after both values are set.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_aspectratiocontainer.rst

@@ -203,6 +203,7 @@ The aspect ratio to enforce on child controls. This is the width divided by the
 The stretch mode used to align child controls.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 15 - 7
classes/class_astar2d.rst

@@ -23,6 +23,13 @@ An implementation of the A\* algorithm, used to find the shortest path between t
 
 See :ref:`AStar3D<class_AStar3D>` for a more thorough explanation on how to use this class. **AStar2D** is a wrapper for :ref:`AStar3D<class_AStar3D>` that enforces 2D coordinates.
 
+.. rst-class:: classref-introduction-group
+
+Tutorials
+---------
+
+- `Grid-based Navigation with AStarGrid2D Demo <https://godotengine.org/asset-library/asset/2723>`__
+
 .. rst-class:: classref-reftable-group
 
 Methods
@@ -301,12 +308,12 @@ If there is no valid path to the target, and ``allow_partial_path`` is ``true``,
     astar.add_point(2, Vector2(0, 1), 1) # Default weight is 1
     astar.add_point(3, Vector2(1, 1))
     astar.add_point(4, Vector2(2, 0))
-    
+
     astar.connect_points(1, 2, false)
     astar.connect_points(2, 3, false)
     astar.connect_points(4, 3, false)
     astar.connect_points(1, 4, false)
-    
+
     var res = astar.get_id_path(1, 3) # Returns [1, 2, 3]
 
  .. code-tab:: csharp
@@ -316,7 +323,7 @@ If there is no valid path to the target, and ``allow_partial_path`` is ``true``,
     astar.AddPoint(2, new Vector2(0, 1), 1); // Default weight is 1
     astar.AddPoint(3, new Vector2(1, 1));
     astar.AddPoint(4, new Vector2(2, 0));
-    
+
     astar.ConnectPoints(1, 2, false);
     astar.ConnectPoints(2, 3, false);
     astar.ConnectPoints(4, 3, false);
@@ -361,10 +368,10 @@ Returns an array with the IDs of the points that form the connection with the gi
     astar.add_point(2, Vector2(0, 1))
     astar.add_point(3, Vector2(1, 1))
     astar.add_point(4, Vector2(2, 0))
-    
+
     astar.connect_points(1, 2, true)
     astar.connect_points(1, 3, true)
-    
+
     var neighbors = astar.get_point_connections(1) # Returns [2, 3]
 
  .. code-tab:: csharp
@@ -374,10 +381,10 @@ Returns an array with the IDs of the points that form the connection with the gi
     astar.AddPoint(2, new Vector2(0, 1));
     astar.AddPoint(3, new Vector2(1, 1));
     astar.AddPoint(4, new Vector2(2, 0));
-    
+
     astar.ConnectPoints(1, 2, true);
     astar.ConnectPoints(1, 3, true);
-    
+
     long[] neighbors = astar.GetPointConnections(1); // Returns [2, 3]
 
 
@@ -533,6 +540,7 @@ Sets the ``position`` for the point with the given ``id``.
 Sets the ``weight_scale`` for the point with the given ``id``. The ``weight_scale`` is multiplied by the result of :ref:`_compute_cost()<class_AStar2D_private_method__compute_cost>` when determining the overall cost of traveling across a segment from a neighboring point to this point.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 11 - 10
classes/class_astar3d.rst

@@ -34,12 +34,12 @@ It is also possible to use non-Euclidean distances. To do so, create a script th
 
     class_name MyAStar3D
     extends AStar3D
-    
+
     func _compute_cost(u, v):
         var u_pos = get_point_position(u)
         var v_pos = get_point_position(v)
         return abs(u_pos.x - v_pos.x) + abs(u_pos.y - v_pos.y) + abs(u_pos.z - v_pos.z)
-    
+
     func _estimate_cost(u, v):
         var u_pos = get_point_position(u)
         var v_pos = get_point_position(v)
@@ -48,7 +48,7 @@ It is also possible to use non-Euclidean distances. To do so, create a script th
  .. code-tab:: csharp
 
     using Godot;
-    
+
     [GlobalClass]
     public partial class MyAStar3D : AStar3D
     {
@@ -56,10 +56,10 @@ It is also possible to use non-Euclidean distances. To do so, create a script th
         {
             Vector3 fromPoint = GetPointPosition(fromId);
             Vector3 toPoint = GetPointPosition(toId);
-    
+
             return Mathf.Abs(fromPoint.X - toPoint.X) + Mathf.Abs(fromPoint.Y - toPoint.Y) + Mathf.Abs(fromPoint.Z - toPoint.Z);
         }
-    
+
         public override float _EstimateCost(long fromId, long toId)
         {
             Vector3 fromPoint = GetPointPosition(fromId);
@@ -352,12 +352,12 @@ If there is no valid path to the target, and ``allow_partial_path`` is ``true``,
     astar.add_point(2, Vector3(0, 1, 0), 1) # Default weight is 1
     astar.add_point(3, Vector3(1, 1, 0))
     astar.add_point(4, Vector3(2, 0, 0))
-    
+
     astar.connect_points(1, 2, false)
     astar.connect_points(2, 3, false)
     astar.connect_points(4, 3, false)
     astar.connect_points(1, 4, false)
-    
+
     var res = astar.get_id_path(1, 3) # Returns [1, 2, 3]
 
  .. code-tab:: csharp
@@ -411,10 +411,10 @@ Returns an array with the IDs of the points that form the connection with the gi
     astar.add_point(2, Vector3(0, 1, 0))
     astar.add_point(3, Vector3(1, 1, 0))
     astar.add_point(4, Vector3(2, 0, 0))
-    
+
     astar.connect_points(1, 2, true)
     astar.connect_points(1, 3, true)
-    
+
     var neighbors = astar.get_point_connections(1) # Returns [2, 3]
 
  .. code-tab:: csharp
@@ -426,7 +426,7 @@ Returns an array with the IDs of the points that form the connection with the gi
     astar.AddPoint(4, new Vector3(2, 0, 0));
     astar.ConnectPoints(1, 2, true);
     astar.ConnectPoints(1, 3, true);
-    
+
     long[] neighbors = astar.GetPointConnections(1); // Returns [2, 3]
 
 
@@ -582,6 +582,7 @@ Sets the ``position`` for the point with the given ``id``.
 Sets the ``weight_scale`` for the point with the given ``id``. The ``weight_scale`` is multiplied by the result of :ref:`_compute_cost()<class_AStar3D_private_method__compute_cost>` when determining the overall cost of traveling across a segment from a neighboring point to this point.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 8 - 0
classes/class_astargrid2d.rst

@@ -48,6 +48,13 @@ To use **AStarGrid2D**, you only need to set the :ref:`region<class_AStarGrid2D_
 
 To remove a point from the pathfinding grid, it must be set as "solid" with :ref:`set_point_solid()<class_AStarGrid2D_method_set_point_solid>`.
 
+.. rst-class:: classref-introduction-group
+
+Tutorials
+---------
+
+- `Grid-based Navigation with AStarGrid2D Demo <https://godotengine.org/asset-library/asset/2723>`__
+
 .. rst-class:: classref-reftable-group
 
 Properties
@@ -692,6 +699,7 @@ Updates the internal state of the grid according to the parameters to prepare it
 \ **Note:** All point data (solidity and weight scale) will be cleared.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_atlastexture.rst

@@ -119,6 +119,7 @@ The margin around the :ref:`region<class_AtlasTexture_property_region>`. Useful
 The region used to draw the :ref:`atlas<class_AtlasTexture_property_atlas>`. If either dimension of the region's size is ``0``, the value from :ref:`atlas<class_AtlasTexture_property_atlas>` size will be used for that axis instead.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audiobuslayout.rst

@@ -22,6 +22,7 @@ Description
 Stores position, muting, solo, bypass, effects, effect position, volume, and the connections between buses. See :ref:`AudioServer<class_AudioServer>` for usage.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 8 - 7
classes/class_audioeffect.rst

@@ -42,9 +42,9 @@ Methods
 .. table::
    :widths: auto
 
-   +-------------------------------------------------------+------------------------------------------------------------------------------------+
-   | :ref:`AudioEffectInstance<class_AudioEffectInstance>` | :ref:`_instantiate<class_AudioEffect_private_method__instantiate>`\ (\ ) |virtual| |
-   +-------------------------------------------------------+------------------------------------------------------------------------------------+
+   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------+
+   | :ref:`AudioEffectInstance<class_AudioEffectInstance>` | :ref:`_instantiate<class_AudioEffect_private_method__instantiate>`\ (\ ) |virtual| |required| |
+   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------+
 
 .. rst-class:: classref-section-separator
 
@@ -59,25 +59,26 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-:ref:`AudioEffectInstance<class_AudioEffectInstance>` **_instantiate**\ (\ ) |virtual| :ref:`🔗<class_AudioEffect_private_method__instantiate>`
+:ref:`AudioEffectInstance<class_AudioEffectInstance>` **_instantiate**\ (\ ) |virtual| |required| :ref:`🔗<class_AudioEffect_private_method__instantiate>`
 
 Override this method to customize the :ref:`AudioEffectInstance<class_AudioEffectInstance>` created when this effect is applied on a bus in the editor's Audio panel, or through :ref:`AudioServer.add_bus_effect()<class_AudioServer_method_add_bus_effect>`.
 
 ::
 
     extends AudioEffect
-    
+
     @export var strength = 4.0
-    
+
     func _instantiate():
         var effect = CustomAudioEffectInstance.new()
         effect.base = self
-    
+
         return effect
 
 \ **Note:** It is recommended to keep a reference to the original **AudioEffect** in the new instance. Depending on the implementation this allows the effect instance to listen for changes at run-time and be modified accordingly.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audioeffectamplify.rst

@@ -84,6 +84,7 @@ Amount of amplification as a linear value.
 \ **Note:** This member modifies :ref:`volume_db<class_AudioEffectAmplify_property_volume_db>` for convenience. The returned value is equivalent to the result of :ref:`@GlobalScope.db_to_linear()<class_@GlobalScope_method_db_to_linear>` on :ref:`volume_db<class_AudioEffectAmplify_property_volume_db>`. Setting this member is equivalent to setting :ref:`volume_db<class_AudioEffectAmplify_property_volume_db>` to the result of :ref:`@GlobalScope.linear_to_db()<class_@GlobalScope_method_linear_to_db>` on a value.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audioeffectbandlimitfilter.rst

@@ -29,6 +29,7 @@ Tutorials
 - :doc:`Audio buses <../tutorials/audio/audio_buses>`
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audioeffectbandpassfilter.rst

@@ -29,6 +29,7 @@ Tutorials
 - :doc:`Audio buses <../tutorials/audio/audio_buses>`
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audioeffectcapture.rst

@@ -186,6 +186,7 @@ Returns the number of frames available to read using :ref:`get_buffer()<class_Au
 Returns the number of audio frames inserted from the audio bus.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audioeffectchorus.rst

@@ -764,6 +764,7 @@ Method Descriptions
 	There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`!
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 2 - 1
classes/class_audioeffectcompressor.rst

@@ -25,7 +25,7 @@ Dynamic range compressor reduces the level of the sound when the amplitude goes
 
 Compressor has many uses in the mix:
 
-- In the Master bus to compress the whole output (although an :ref:`AudioEffectLimiter<class_AudioEffectLimiter>` is probably better).
+- In the Master bus to compress the whole output (although an :ref:`AudioEffectHardLimiter<class_AudioEffectHardLimiter>` is probably better).
 
 - In voice channels to ensure they sound as balanced as possible.
 
@@ -189,6 +189,7 @@ Reduce the sound level using another audio bus for threshold detection.
 The level above which compression is applied to the audio. Value can range from -60 to 0.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audioeffectdelay.rst

@@ -293,6 +293,7 @@ Sound level for the second tap.
 Pan position for the second tap. Value can range from -1 (fully left) to 1 (fully right).
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audioeffectdistortion.rst

@@ -202,6 +202,7 @@ Increases or decreases the volume after the effect, in decibels. Value can range
 Increases or decreases the volume before the effect, in decibels. Value can range from -60 to 60.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audioeffecteq.rst

@@ -90,6 +90,7 @@ Returns the band's gain at the specified index, in dB.
 Sets band's gain at the specified index, in dB.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audioeffecteq10.rst

@@ -53,6 +53,7 @@ Tutorials
 - :doc:`Audio buses <../tutorials/audio/audio_buses>`
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audioeffecteq21.rst

@@ -75,6 +75,7 @@ Tutorials
 - :doc:`Audio buses <../tutorials/audio/audio_buses>`
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audioeffecteq6.rst

@@ -45,6 +45,7 @@ Tutorials
 - :doc:`Audio buses <../tutorials/audio/audio_buses>`
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audioeffectfilter.rst

@@ -169,6 +169,7 @@ Gain amount of the frequencies after the filter.
 Amount of boost in the frequency range near the cutoff frequency.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audioeffecthardlimiter.rst

@@ -103,6 +103,7 @@ Gain to apply before limiting, in decibels.
 Time it takes in seconds for the gain reduction to fully release.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audioeffecthighpassfilter.rst

@@ -29,6 +29,7 @@ Tutorials
 - :doc:`Audio buses <../tutorials/audio/audio_buses>`
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audioeffecthighshelffilter.rst

@@ -29,6 +29,7 @@ Tutorials
 - :doc:`Audio buses <../tutorials/audio/audio_buses>`
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 7 - 6
classes/class_audioeffectinstance.rst

@@ -38,11 +38,11 @@ Methods
 .. table::
    :widths: auto
 
-   +-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                  | :ref:`_process<class_AudioEffectInstance_private_method__process>`\ (\ src_buffer\: ``const void*``, dst_buffer\: ``AudioFrame*``, frame_count\: :ref:`int<class_int>`\ ) |virtual| |
-   +-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`bool<class_bool>` | :ref:`_process_silence<class_AudioEffectInstance_private_method__process_silence>`\ (\ ) |virtual| |const|                                                                          |
-   +-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   +-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                  | :ref:`_process<class_AudioEffectInstance_private_method__process>`\ (\ src_buffer\: ``const void*``, dst_buffer\: ``AudioFrame*``, frame_count\: :ref:`int<class_int>`\ ) |virtual| |required| |
+   +-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>` | :ref:`_process_silence<class_AudioEffectInstance_private_method__process_silence>`\ (\ ) |virtual| |const|                                                                                     |
+   +-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 .. rst-class:: classref-section-separator
 
@@ -57,7 +57,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-|void| **_process**\ (\ src_buffer\: ``const void*``, dst_buffer\: ``AudioFrame*``, frame_count\: :ref:`int<class_int>`\ ) |virtual| :ref:`🔗<class_AudioEffectInstance_private_method__process>`
+|void| **_process**\ (\ src_buffer\: ``const void*``, dst_buffer\: ``AudioFrame*``, frame_count\: :ref:`int<class_int>`\ ) |virtual| |required| :ref:`🔗<class_AudioEffectInstance_private_method__process>`
 
 Called by the :ref:`AudioServer<class_AudioServer>` to process this effect. When :ref:`_process_silence()<class_AudioEffectInstance_private_method__process_silence>` is not overridden or it returns ``false``, this method is called only when the bus is active.
 
@@ -78,6 +78,7 @@ Override this method to customize the processing behavior of this effect instanc
 Should return ``true`` to force the :ref:`AudioServer<class_AudioServer>` to always call :ref:`_process()<class_AudioEffectInstance_private_method__process>`, even if the bus has been muted or cannot otherwise be heard.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audioeffectlimiter.rst

@@ -126,6 +126,7 @@ Applies a gain to the limited waves, in decibels. Value can range from 0 to 6.
 Threshold from which the limiter begins to be active, in decibels. Value can range from -30 to 0.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audioeffectlowpassfilter.rst

@@ -29,6 +29,7 @@ Tutorials
 - :doc:`Audio buses <../tutorials/audio/audio_buses>`
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audioeffectlowshelffilter.rst

@@ -29,6 +29,7 @@ Tutorials
 - :doc:`Audio buses <../tutorials/audio/audio_buses>`
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audioeffectnotchfilter.rst

@@ -29,6 +29,7 @@ Tutorials
 - :doc:`Audio buses <../tutorials/audio/audio_buses>`
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audioeffectpanner.rst

@@ -63,6 +63,7 @@ Property Descriptions
 Pan position. Value can range from -1 (fully left) to 1 (fully right).
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audioeffectphaser.rst

@@ -141,6 +141,7 @@ Determines the minimum frequency affected by the LFO modulations, in Hz. Value c
 Adjusts the rate in Hz at which the effect sweeps up and down across the frequency range.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audioeffectpitchshift.rst

@@ -166,6 +166,7 @@ The oversampling factor to use. Higher values result in better quality, but are
 The pitch scale to use. ``1.0`` is the default pitch and plays sounds unaffected. :ref:`pitch_scale<class_AudioEffectPitchShift_property_pitch_scale>` can range from ``0.0`` (infinitely low pitch, inaudible) to ``16`` (16 times higher than the initial pitch).
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 2 - 1
classes/class_audioeffectrecord.rst

@@ -84,7 +84,7 @@ Property Descriptions
 - |void| **set_format**\ (\ value\: :ref:`Format<enum_AudioStreamWAV_Format>`\ )
 - :ref:`Format<enum_AudioStreamWAV_Format>` **get_format**\ (\ )
 
-Specifies the format in which the sample will be recorded. See :ref:`Format<enum_AudioStreamWAV_Format>` for available formats.
+Specifies the format in which the sample will be recorded.
 
 .. rst-class:: classref-section-separator
 
@@ -128,6 +128,7 @@ Returns whether the recording is active or not.
 If ``true``, the sound will be recorded. Note that restarting the recording will remove the previously recorded sample.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audioeffectreverb.rst

@@ -198,6 +198,7 @@ Widens or narrows the stereo image of the reverb tail. 1 means fully widens. Val
 Output percent of modified sound. At 0, only original sound is outputted. Value can range from 0 to 1.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audioeffectspectrumanalyzer.rst

@@ -170,6 +170,7 @@ The size of the `Fast Fourier transform <https://en.wikipedia.org/wiki/Fast_Four
 	There is currently no description for this property. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`!
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 2 - 1
classes/class_audioeffectspectrumanalyzerinstance.rst

@@ -90,9 +90,10 @@ Method Descriptions
 
 Returns the magnitude of the frequencies from ``from_hz`` to ``to_hz`` in linear energy as a Vector2. The ``x`` component of the return value represents the left stereo channel, and ``y`` represents the right channel.
 
-\ ``mode`` determines how the frequency range will be processed. See :ref:`MagnitudeMode<enum_AudioEffectSpectrumAnalyzerInstance_MagnitudeMode>`.
+\ ``mode`` determines how the frequency range will be processed.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audioeffectstereoenhance.rst

@@ -101,6 +101,7 @@ Widens sound stage through phase shifting in conjunction with :ref:`time_pullout
 Widens sound stage through phase shifting in conjunction with :ref:`surround<class_AudioEffectStereoEnhance_property_surround>`. Just delays the right channel if :ref:`surround<class_AudioEffectStereoEnhance_property_surround>` is 0.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audiolistener2d.rst

@@ -86,6 +86,7 @@ Makes the **AudioListener2D** active, setting it as the hearing point for the so
 This method will have no effect if the **AudioListener2D** is not added to :ref:`SceneTree<class_SceneTree>`.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audiolistener3d.rst

@@ -98,6 +98,7 @@ Returns ``true`` if the listener was made current using :ref:`make_current()<cla
 Enables the listener. This will override the current camera's listener.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audiosample.rst

@@ -24,6 +24,7 @@ Description
 Base class for audio samples.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audiosampleplayback.rst

@@ -24,6 +24,7 @@ Description
 Meta class for playing back audio samples.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audioserver.rst

@@ -923,6 +923,7 @@ Swaps the position of two effects in bus ``bus_idx``.
 Unlocks the audio driver's main loop. (After locking it, you should always unlock it.)
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 17 - 0
classes/class_audiostream.rst

@@ -57,6 +57,8 @@ Methods
    +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------+
    | :ref:`String<class_String>`                                      | :ref:`_get_stream_name<class_AudioStream_private_method__get_stream_name>`\ (\ ) |virtual| |const|           |
    +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------+
+   | :ref:`Dictionary<class_Dictionary>`                              | :ref:`_get_tags<class_AudioStream_private_method__get_tags>`\ (\ ) |virtual| |const|                         |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------+
    | :ref:`bool<class_bool>`                                          | :ref:`_has_loop<class_AudioStream_private_method__has_loop>`\ (\ ) |virtual| |const|                         |
    +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------+
    | :ref:`AudioStreamPlayback<class_AudioStreamPlayback>`            | :ref:`_instantiate_playback<class_AudioStream_private_method__instantiate_playback>`\ (\ ) |virtual| |const| |
@@ -178,6 +180,20 @@ Override this method to customize the name assigned to this audio stream. Unused
 
 ----
 
+.. _class_AudioStream_private_method__get_tags:
+
+.. rst-class:: classref-method
+
+:ref:`Dictionary<class_Dictionary>` **_get_tags**\ (\ ) |virtual| |const| :ref:`🔗<class_AudioStream_private_method__get_tags>`
+
+Override this method to customize the tags for this audio stream. Should return a :ref:`Dictionary<class_Dictionary>` of strings with the tag as the key and its content as the value.
+
+Commonly used tags include ``title``, ``artist``, ``album``, ``tracknumber``, and ``date``.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_AudioStream_private_method__has_loop:
 
 .. rst-class:: classref-method
@@ -287,6 +303,7 @@ Returns ``true`` if the stream is a collection of other streams, ``false`` other
 Returns ``true`` if this audio stream only supports one channel (*monophony*), or ``false`` if the audio stream supports two or more channels (*polyphony*).
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 8 - 7
classes/class_audiostreamgenerator.rst

@@ -32,16 +32,16 @@ Here's a sample on how to use it to generate a sine wave:
     @onready var sample_hz = $AudioStreamPlayer.stream.mix_rate
     var pulse_hz = 440.0 # The frequency of the sound wave.
     var phase = 0.0
-    
+
     func _ready():
         $AudioStreamPlayer.play()
         playback = $AudioStreamPlayer.get_stream_playback()
         fill_buffer()
-    
+
     func fill_buffer():
         var increment = pulse_hz / sample_hz
         var frames_available = playback.get_frames_available()
-    
+
         for i in range(frames_available):
             playback.push_frame(Vector2.ONE * sin(phase * TAU))
             phase = fmod(phase + increment, 1.0)
@@ -49,12 +49,12 @@ Here's a sample on how to use it to generate a sine wave:
  .. code-tab:: csharp
 
     [Export] public AudioStreamPlayer Player { get; set; }
-    
+
     private AudioStreamGeneratorPlayback _playback; // Will hold the AudioStreamGeneratorPlayback.
     private float _sampleHz;
     private float _pulseHz = 440.0f; // The frequency of the sound wave.
     private double phase = 0.0;
-    
+
     public override void _Ready()
     {
         if (Player.Stream is AudioStreamGenerator generator) // Type as a generator to access MixRate.
@@ -65,12 +65,12 @@ Here's a sample on how to use it to generate a sine wave:
             FillBuffer();
         }
     }
-    
+
     public void FillBuffer()
     {
         float increment = _pulseHz / _sampleHz;
         int framesAvailable = _playback.GetFramesAvailable();
-    
+
         for (int i = 0; i < framesAvailable; i++)
         {
             _playback.PushFrame(Vector2.One * (float)Mathf.Sin(phase * Mathf.Tau));
@@ -221,6 +221,7 @@ According to the `Nyquist-Shannon sampling theorem <https://en.wikipedia.org/wik
 Mixing rate mode. If set to :ref:`MIX_RATE_CUSTOM<class_AudioStreamGenerator_constant_MIX_RATE_CUSTOM>`, :ref:`mix_rate<class_AudioStreamGenerator_property_mix_rate>` is used, otherwise current :ref:`AudioServer<class_AudioServer>` mixing rate is used.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audiostreamgeneratorplayback.rst

@@ -130,6 +130,7 @@ Pushes several audio data frames to the buffer. This is usually more efficient t
 Pushes a single audio data frame to the buffer. This is usually less efficient than :ref:`push_buffer()<class_AudioStreamGeneratorPlayback_method_push_buffer>` in C# and compiled languages via GDExtension, but :ref:`push_frame()<class_AudioStreamGeneratorPlayback_method_push_frame>` may be *more* efficient in GDScript.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audiostreaminteractive.rst

@@ -546,6 +546,7 @@ Set the name of the current clip (for easier identification).
 Set the :ref:`AudioStream<class_AudioStream>` associated with the current clip.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audiostreammicrophone.rst

@@ -33,6 +33,7 @@ Tutorials
 - `Audio Mic Record Demo <https://github.com/godotengine/godot-demo-projects/tree/master/audio/mic_record>`__
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audiostreammp3.rst

@@ -229,6 +229,7 @@ Creates a new **AudioStreamMP3** instance from the given buffer. The buffer must
 Creates a new **AudioStreamMP3** instance from the given file path. The file must be in MP3 format.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 24 - 0
classes/class_audiostreamoggvorbis.rst

@@ -49,6 +49,8 @@ Properties
    +---------------------------------------------------+-----------------------------------------------------------------------------+-----------+
    | :ref:`OggPacketSequence<class_OggPacketSequence>` | :ref:`packet_sequence<class_AudioStreamOggVorbis_property_packet_sequence>` |           |
    +---------------------------------------------------+-----------------------------------------------------------------------------+-----------+
+   | :ref:`Dictionary<class_Dictionary>`               | :ref:`tags<class_AudioStreamOggVorbis_property_tags>`                       | ``{}``    |
+   +---------------------------------------------------+-----------------------------------------------------------------------------+-----------+
 
 .. rst-class:: classref-reftable-group
 
@@ -177,6 +179,27 @@ Time in seconds at which the stream starts after being looped.
 
 Contains the raw Ogg data for this stream.
 
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AudioStreamOggVorbis_property_tags:
+
+.. rst-class:: classref-property
+
+:ref:`Dictionary<class_Dictionary>` **tags** = ``{}`` :ref:`🔗<class_AudioStreamOggVorbis_property_tags>`
+
+.. rst-class:: classref-property-setget
+
+- |void| **set_tags**\ (\ value\: :ref:`Dictionary<class_Dictionary>`\ )
+- :ref:`Dictionary<class_Dictionary>` **get_tags**\ (\ )
+
+Contains user-defined tags if found in the Ogg Vorbis data.
+
+Commonly used tags include ``title``, ``artist``, ``album``, ``tracknumber``, and ``date`` (``date`` does not have a standard date format).
+
+\ **Note:** No tag is *guaranteed* to be present in every file, so make sure to account for the keys not always existing.
+
 .. rst-class:: classref-section-separator
 
 ----
@@ -207,6 +230,7 @@ Creates a new **AudioStreamOggVorbis** instance from the given buffer. The buffe
 Creates a new **AudioStreamOggVorbis** instance from the given file path. The file must be in Ogg Vorbis format.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 41 - 40
classes/class_audiostreamplayback.rst

@@ -38,45 +38,45 @@ Methods
 .. table::
    :widths: auto
 
-   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`int<class_int>`                                 | :ref:`_get_loop_count<class_AudioStreamPlayback_private_method__get_loop_count>`\ (\ ) |virtual| |const|                                                                          |
-   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`Variant<class_Variant>`                         | :ref:`_get_parameter<class_AudioStreamPlayback_private_method__get_parameter>`\ (\ name\: :ref:`StringName<class_StringName>`\ ) |virtual| |const|                                |
-   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`float<class_float>`                             | :ref:`_get_playback_position<class_AudioStreamPlayback_private_method__get_playback_position>`\ (\ ) |virtual| |const|                                                            |
-   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`bool<class_bool>`                               | :ref:`_is_playing<class_AudioStreamPlayback_private_method__is_playing>`\ (\ ) |virtual| |const|                                                                                  |
-   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`int<class_int>`                                 | :ref:`_mix<class_AudioStreamPlayback_private_method__mix>`\ (\ buffer\: ``AudioFrame*``, rate_scale\: :ref:`float<class_float>`, frames\: :ref:`int<class_int>`\ ) |virtual|      |
-   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                | :ref:`_seek<class_AudioStreamPlayback_private_method__seek>`\ (\ position\: :ref:`float<class_float>`\ ) |virtual|                                                                |
-   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                | :ref:`_set_parameter<class_AudioStreamPlayback_private_method__set_parameter>`\ (\ name\: :ref:`StringName<class_StringName>`, value\: :ref:`Variant<class_Variant>`\ ) |virtual| |
-   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                | :ref:`_start<class_AudioStreamPlayback_private_method__start>`\ (\ from_pos\: :ref:`float<class_float>`\ ) |virtual|                                                              |
-   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                | :ref:`_stop<class_AudioStreamPlayback_private_method__stop>`\ (\ ) |virtual|                                                                                                      |
-   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                | :ref:`_tag_used_streams<class_AudioStreamPlayback_private_method__tag_used_streams>`\ (\ ) |virtual|                                                                              |
-   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`int<class_int>`                                 | :ref:`get_loop_count<class_AudioStreamPlayback_method_get_loop_count>`\ (\ ) |const|                                                                                              |
-   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`float<class_float>`                             | :ref:`get_playback_position<class_AudioStreamPlayback_method_get_playback_position>`\ (\ ) |const|                                                                                |
-   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`AudioSamplePlayback<class_AudioSamplePlayback>` | :ref:`get_sample_playback<class_AudioStreamPlayback_method_get_sample_playback>`\ (\ ) |const|                                                                                    |
-   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`bool<class_bool>`                               | :ref:`is_playing<class_AudioStreamPlayback_method_is_playing>`\ (\ ) |const|                                                                                                      |
-   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`PackedVector2Array<class_PackedVector2Array>`   | :ref:`mix_audio<class_AudioStreamPlayback_method_mix_audio>`\ (\ rate_scale\: :ref:`float<class_float>`, frames\: :ref:`int<class_int>`\ )                                        |
-   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                | :ref:`seek<class_AudioStreamPlayback_method_seek>`\ (\ time\: :ref:`float<class_float>` = 0.0\ )                                                                                  |
-   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                | :ref:`set_sample_playback<class_AudioStreamPlayback_method_set_sample_playback>`\ (\ playback_sample\: :ref:`AudioSamplePlayback<class_AudioSamplePlayback>`\ )                   |
-   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                | :ref:`start<class_AudioStreamPlayback_method_start>`\ (\ from_pos\: :ref:`float<class_float>` = 0.0\ )                                                                            |
-   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                | :ref:`stop<class_AudioStreamPlayback_method_stop>`\ (\ )                                                                                                                          |
-   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`int<class_int>`                                 | :ref:`_get_loop_count<class_AudioStreamPlayback_private_method__get_loop_count>`\ (\ ) |virtual| |const|                                                                                |
+   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`Variant<class_Variant>`                         | :ref:`_get_parameter<class_AudioStreamPlayback_private_method__get_parameter>`\ (\ name\: :ref:`StringName<class_StringName>`\ ) |virtual| |const|                                      |
+   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`float<class_float>`                             | :ref:`_get_playback_position<class_AudioStreamPlayback_private_method__get_playback_position>`\ (\ ) |virtual| |const|                                                                  |
+   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                               | :ref:`_is_playing<class_AudioStreamPlayback_private_method__is_playing>`\ (\ ) |virtual| |const|                                                                                        |
+   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`int<class_int>`                                 | :ref:`_mix<class_AudioStreamPlayback_private_method__mix>`\ (\ buffer\: ``AudioFrame*``, rate_scale\: :ref:`float<class_float>`, frames\: :ref:`int<class_int>`\ ) |virtual| |required| |
+   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                | :ref:`_seek<class_AudioStreamPlayback_private_method__seek>`\ (\ position\: :ref:`float<class_float>`\ ) |virtual|                                                                      |
+   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                | :ref:`_set_parameter<class_AudioStreamPlayback_private_method__set_parameter>`\ (\ name\: :ref:`StringName<class_StringName>`, value\: :ref:`Variant<class_Variant>`\ ) |virtual|       |
+   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                | :ref:`_start<class_AudioStreamPlayback_private_method__start>`\ (\ from_pos\: :ref:`float<class_float>`\ ) |virtual|                                                                    |
+   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                | :ref:`_stop<class_AudioStreamPlayback_private_method__stop>`\ (\ ) |virtual|                                                                                                            |
+   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                | :ref:`_tag_used_streams<class_AudioStreamPlayback_private_method__tag_used_streams>`\ (\ ) |virtual|                                                                                    |
+   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`int<class_int>`                                 | :ref:`get_loop_count<class_AudioStreamPlayback_method_get_loop_count>`\ (\ ) |const|                                                                                                    |
+   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`float<class_float>`                             | :ref:`get_playback_position<class_AudioStreamPlayback_method_get_playback_position>`\ (\ ) |const|                                                                                      |
+   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`AudioSamplePlayback<class_AudioSamplePlayback>` | :ref:`get_sample_playback<class_AudioStreamPlayback_method_get_sample_playback>`\ (\ ) |const|                                                                                          |
+   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                               | :ref:`is_playing<class_AudioStreamPlayback_method_is_playing>`\ (\ ) |const|                                                                                                            |
+   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`PackedVector2Array<class_PackedVector2Array>`   | :ref:`mix_audio<class_AudioStreamPlayback_method_mix_audio>`\ (\ rate_scale\: :ref:`float<class_float>`, frames\: :ref:`int<class_int>`\ )                                              |
+   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                | :ref:`seek<class_AudioStreamPlayback_method_seek>`\ (\ time\: :ref:`float<class_float>` = 0.0\ )                                                                                        |
+   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                | :ref:`set_sample_playback<class_AudioStreamPlayback_method_set_sample_playback>`\ (\ playback_sample\: :ref:`AudioSamplePlayback<class_AudioSamplePlayback>`\ )                         |
+   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                | :ref:`start<class_AudioStreamPlayback_method_start>`\ (\ from_pos\: :ref:`float<class_float>` = 0.0\ )                                                                                  |
+   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                | :ref:`stop<class_AudioStreamPlayback_method_stop>`\ (\ )                                                                                                                                |
+   +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 .. rst-class:: classref-section-separator
 
@@ -139,7 +139,7 @@ Overridable method. Should return ``true`` if this playback is active and playin
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **_mix**\ (\ buffer\: ``AudioFrame*``, rate_scale\: :ref:`float<class_float>`, frames\: :ref:`int<class_int>`\ ) |virtual| :ref:`🔗<class_AudioStreamPlayback_private_method__mix>`
+:ref:`int<class_int>` **_mix**\ (\ buffer\: ``AudioFrame*``, rate_scale\: :ref:`float<class_float>`, frames\: :ref:`int<class_int>`\ ) |virtual| |required| :ref:`🔗<class_AudioStreamPlayback_private_method__mix>`
 
 Override this method to customize how the audio stream is mixed. This method is called even if the playback is not active.
 
@@ -322,6 +322,7 @@ Starts the stream from the given ``from_pos``, in seconds.
 Stops the stream.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audiostreamplaybackinteractive.rst

@@ -90,6 +90,7 @@ Switch to a clip (by index).
 Switch to a clip (by name).
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audiostreamplaybackoggvorbis.rst

@@ -17,6 +17,7 @@ AudioStreamPlaybackOggVorbis
 	There is currently no description for this class. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`!
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audiostreamplaybackplaylist.rst

@@ -15,6 +15,7 @@ AudioStreamPlaybackPlaylist
 Playback class used for :ref:`AudioStreamPlaylist<class_AudioStreamPlaylist>`.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audiostreamplaybackpolyphonic.rst

@@ -130,6 +130,7 @@ Change the stream volume (in db). The ``stream`` argument is an integer ID retur
 Stop a stream. The ``stream`` argument is an integer ID returned by :ref:`play_stream()<class_AudioStreamPlaybackPolyphonic_method_play_stream>`, which becomes invalid after calling this function.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 10 - 9
classes/class_audiostreamplaybackresampled.rst

@@ -26,13 +26,13 @@ Methods
 .. table::
    :widths: auto
 
-   +---------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`float<class_float>` | :ref:`_get_stream_sampling_rate<class_AudioStreamPlaybackResampled_private_method__get_stream_sampling_rate>`\ (\ ) |virtual| |const|                                      |
-   +---------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`int<class_int>`     | :ref:`_mix_resampled<class_AudioStreamPlaybackResampled_private_method__mix_resampled>`\ (\ dst_buffer\: ``AudioFrame*``, frame_count\: :ref:`int<class_int>`\ ) |virtual| |
-   +---------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                    | :ref:`begin_resample<class_AudioStreamPlaybackResampled_method_begin_resample>`\ (\ )                                                                                      |
-   +---------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   +---------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`float<class_float>` | :ref:`_get_stream_sampling_rate<class_AudioStreamPlaybackResampled_private_method__get_stream_sampling_rate>`\ (\ ) |virtual| |required| |const|                                      |
+   +---------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`int<class_int>`     | :ref:`_mix_resampled<class_AudioStreamPlaybackResampled_private_method__mix_resampled>`\ (\ dst_buffer\: ``AudioFrame*``, frame_count\: :ref:`int<class_int>`\ ) |virtual| |required| |
+   +---------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                    | :ref:`begin_resample<class_AudioStreamPlaybackResampled_method_begin_resample>`\ (\ )                                                                                                 |
+   +---------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 .. rst-class:: classref-section-separator
 
@@ -47,7 +47,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **_get_stream_sampling_rate**\ (\ ) |virtual| |const| :ref:`🔗<class_AudioStreamPlaybackResampled_private_method__get_stream_sampling_rate>`
+:ref:`float<class_float>` **_get_stream_sampling_rate**\ (\ ) |virtual| |required| |const| :ref:`🔗<class_AudioStreamPlaybackResampled_private_method__get_stream_sampling_rate>`
 
 .. container:: contribute
 
@@ -61,7 +61,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **_mix_resampled**\ (\ dst_buffer\: ``AudioFrame*``, frame_count\: :ref:`int<class_int>`\ ) |virtual| :ref:`🔗<class_AudioStreamPlaybackResampled_private_method__mix_resampled>`
+:ref:`int<class_int>` **_mix_resampled**\ (\ dst_buffer\: ``AudioFrame*``, frame_count\: :ref:`int<class_int>`\ ) |virtual| |required| :ref:`🔗<class_AudioStreamPlaybackResampled_private_method__mix_resampled>`
 
 .. container:: contribute
 
@@ -82,6 +82,7 @@ Method Descriptions
 	There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`!
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audiostreamplaybacksynchronized.rst

@@ -17,6 +17,7 @@ AudioStreamPlaybackSynchronized
 	There is currently no description for this class. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`!
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 2 - 1
classes/class_audiostreamplayer.rst

@@ -228,7 +228,7 @@ The maximum number of sounds this node can play at the same time. Calling :ref:`
 - |void| **set_mix_target**\ (\ value\: :ref:`MixTarget<enum_AudioStreamPlayer_MixTarget>`\ )
 - :ref:`MixTarget<enum_AudioStreamPlayer_MixTarget>` **get_mix_target**\ (\ )
 
-The mix target channels, as one of the :ref:`MixTarget<enum_AudioStreamPlayer_MixTarget>` constants. Has no effect when two speakers or less are detected (see :ref:`SpeakerMode<enum_AudioServer_SpeakerMode>`).
+The mix target channels. Has no effect when two speakers or less are detected (see :ref:`SpeakerMode<enum_AudioServer_SpeakerMode>`).
 
 .. rst-class:: classref-item-separator
 
@@ -439,6 +439,7 @@ Restarts all sounds to be played from the given ``to_position``, in seconds. Doe
 Stops all sounds from this node.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audiostreamplayer2d.rst

@@ -441,6 +441,7 @@ Sets the position from which audio will be played, in seconds.
 Stops the audio.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

+ 1 - 0
classes/class_audiostreamplayer3d.rst

@@ -678,6 +678,7 @@ Sets the position from which audio will be played, in seconds.
 Stops the audio.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`

部分文件因文件數量過多而無法顯示