Browse Source

Merge pull request #8105 from godotengine/classref/sync-44e399e

classref: Sync with current master branch (44e399e)
Max Hilbrunner 1 year ago
parent
commit
1ff75df673

+ 1 - 1
classes/class_animatablebody2d.rst

@@ -19,7 +19,7 @@ A 2D physics body that can't be moved by external forces. When moved manually, i
 Description
 Description
 -----------
 -----------
 
 
-An animatable 2D physics body. It can't be moved by external forces or contacts, but can be moved manually by other means such as code, :ref:`AnimationPlayer<class_AnimationPlayer>`\ s (with :ref:`AnimationPlayer.playback_process_mode<class_AnimationPlayer_property_playback_process_mode>` set to :ref:`AnimationPlayer.ANIMATION_PROCESS_PHYSICS<class_AnimationPlayer_constant_ANIMATION_PROCESS_PHYSICS>`), and :ref:`RemoteTransform2D<class_RemoteTransform2D>`.
+An animatable 2D physics body. It can't be moved by external forces or contacts, but can be moved manually by other means such as code, :ref:`AnimationMixer<class_AnimationMixer>`\ s (with :ref:`AnimationMixer.callback_mode_process<class_AnimationMixer_property_callback_mode_process>` set to :ref:`AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_PHYSICS<class_AnimationMixer_constant_ANIMATION_CALLBACK_MODE_PROCESS_PHYSICS>`), and :ref:`RemoteTransform2D<class_RemoteTransform2D>`.
 
 
 When **AnimatableBody2D** is moved, its linear and angular velocity are estimated and used to affect other physics bodies in its path. This makes it useful for moving platforms, doors, and other moving objects.
 When **AnimatableBody2D** is moved, its linear and angular velocity are estimated and used to affect other physics bodies in its path. This makes it useful for moving platforms, doors, and other moving objects.
 
 

+ 1 - 1
classes/class_animatablebody3d.rst

@@ -19,7 +19,7 @@ A 3D physics body that can't be moved by external forces. When moved manually, i
 Description
 Description
 -----------
 -----------
 
 
-An animatable 3D physics body. It can't be moved by external forces or contacts, but can be moved manually by other means such as code, :ref:`AnimationPlayer<class_AnimationPlayer>`\ s (with :ref:`AnimationPlayer.playback_process_mode<class_AnimationPlayer_property_playback_process_mode>` set to :ref:`AnimationPlayer.ANIMATION_PROCESS_PHYSICS<class_AnimationPlayer_constant_ANIMATION_PROCESS_PHYSICS>`), and :ref:`RemoteTransform3D<class_RemoteTransform3D>`.
+An animatable 3D physics body. It can't be moved by external forces or contacts, but can be moved manually by other means such as code, :ref:`AnimationMixer<class_AnimationMixer>`\ s (with :ref:`AnimationMixer.callback_mode_process<class_AnimationMixer_property_callback_mode_process>` set to :ref:`AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_PHYSICS<class_AnimationMixer_constant_ANIMATION_CALLBACK_MODE_PROCESS_PHYSICS>`), and :ref:`RemoteTransform3D<class_RemoteTransform3D>`.
 
 
 When **AnimatableBody3D** is moved, its linear and angular velocity are estimated and used to affect other physics bodies in its path. This makes it useful for moving platforms, doors, and other moving objects.
 When **AnimatableBody3D** is moved, its linear and angular velocity are estimated and used to affect other physics bodies in its path. This makes it useful for moving platforms, doors, and other moving objects.
 
 

+ 809 - 0
classes/class_animationmixer.rst

@@ -0,0 +1,809 @@
+: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/AnimationMixer.xml.
+
+.. _class_AnimationMixer:
+
+AnimationMixer
+==============
+
+**Inherits:** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+
+**Inherited By:** :ref:`AnimationPlayer<class_AnimationPlayer>`, :ref:`AnimationTree<class_AnimationTree>`
+
+Base class for :ref:`AnimationPlayer<class_AnimationPlayer>` and :ref:`AnimationTree<class_AnimationTree>`.
+
+.. rst-class:: classref-introduction-group
+
+Description
+-----------
+
+Base class for :ref:`AnimationPlayer<class_AnimationPlayer>` and :ref:`AnimationTree<class_AnimationTree>` to manage animation lists. It also has general properties and methods for playback and blending.
+
+After instantiating the playback information data within the extended class, the blending is processed by the **AnimationMixer**.
+
+.. rst-class:: classref-reftable-group
+
+Properties
+----------
+
+.. table::
+   :widths: auto
+
+   +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------+--------------------+
+   | :ref:`bool<class_bool>`                                                               | :ref:`active<class_AnimationMixer_property_active>`                               | ``true``           |
+   +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------+--------------------+
+   | :ref:`int<class_int>`                                                                 | :ref:`audio_max_polyphony<class_AnimationMixer_property_audio_max_polyphony>`     | ``32``             |
+   +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------+--------------------+
+   | :ref:`AnimationCallbackModeMethod<enum_AnimationMixer_AnimationCallbackModeMethod>`   | :ref:`callback_mode_method<class_AnimationMixer_property_callback_mode_method>`   | ``0``              |
+   +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------+--------------------+
+   | :ref:`AnimationCallbackModeProcess<enum_AnimationMixer_AnimationCallbackModeProcess>` | :ref:`callback_mode_process<class_AnimationMixer_property_callback_mode_process>` | ``1``              |
+   +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------+--------------------+
+   | :ref:`bool<class_bool>`                                                               | :ref:`deterministic<class_AnimationMixer_property_deterministic>`                 | ``false``          |
+   +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------+--------------------+
+   | :ref:`bool<class_bool>`                                                               | :ref:`reset_on_save<class_AnimationMixer_property_reset_on_save>`                 | ``true``           |
+   +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------+--------------------+
+   | :ref:`NodePath<class_NodePath>`                                                       | :ref:`root_motion_track<class_AnimationMixer_property_root_motion_track>`         | ``NodePath("")``   |
+   +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------+--------------------+
+   | :ref:`NodePath<class_NodePath>`                                                       | :ref:`root_node<class_AnimationMixer_property_root_node>`                         | ``NodePath("..")`` |
+   +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------+--------------------+
+
+.. rst-class:: classref-reftable-group
+
+Methods
+-------
+
+.. table::
+   :widths: auto
+
+   +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`Variant<class_Variant>`                     | :ref:`_post_process_key_value<class_AnimationMixer_method__post_process_key_value>` **(** :ref:`Animation<class_Animation>` animation, :ref:`int<class_int>` track, :ref:`Variant<class_Variant>` value, :ref:`Object<class_Object>` object, :ref:`int<class_int>` object_idx **)** |virtual| |const| |
+   +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`Error<enum_@GlobalScope_Error>`             | :ref:`add_animation_library<class_AnimationMixer_method_add_animation_library>` **(** :ref:`StringName<class_StringName>` name, :ref:`AnimationLibrary<class_AnimationLibrary>` library **)**                                                                                                         |
+   +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | void                                              | :ref:`advance<class_AnimationMixer_method_advance>` **(** :ref:`float<class_float>` delta **)**                                                                                                                                                                                                       |
+   +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | void                                              | :ref:`clear_caches<class_AnimationMixer_method_clear_caches>` **(** **)**                                                                                                                                                                                                                             |
+   +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`StringName<class_StringName>`               | :ref:`find_animation<class_AnimationMixer_method_find_animation>` **(** :ref:`Animation<class_Animation>` animation **)** |const|                                                                                                                                                                     |
+   +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`StringName<class_StringName>`               | :ref:`find_animation_library<class_AnimationMixer_method_find_animation_library>` **(** :ref:`Animation<class_Animation>` animation **)** |const|                                                                                                                                                     |
+   +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`Animation<class_Animation>`                 | :ref:`get_animation<class_AnimationMixer_method_get_animation>` **(** :ref:`StringName<class_StringName>` name **)** |const|                                                                                                                                                                          |
+   +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`AnimationLibrary<class_AnimationLibrary>`   | :ref:`get_animation_library<class_AnimationMixer_method_get_animation_library>` **(** :ref:`StringName<class_StringName>` name **)** |const|                                                                                                                                                          |
+   +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`StringName[]<class_StringName>`             | :ref:`get_animation_library_list<class_AnimationMixer_method_get_animation_library_list>` **(** **)** |const|                                                                                                                                                                                         |
+   +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`get_animation_list<class_AnimationMixer_method_get_animation_list>` **(** **)** |const|                                                                                                                                                                                                         |
+   +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`Vector3<class_Vector3>`                     | :ref:`get_root_motion_position<class_AnimationMixer_method_get_root_motion_position>` **(** **)** |const|                                                                                                                                                                                             |
+   +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`Vector3<class_Vector3>`                     | :ref:`get_root_motion_position_accumulator<class_AnimationMixer_method_get_root_motion_position_accumulator>` **(** **)** |const|                                                                                                                                                                     |
+   +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`Quaternion<class_Quaternion>`               | :ref:`get_root_motion_rotation<class_AnimationMixer_method_get_root_motion_rotation>` **(** **)** |const|                                                                                                                                                                                             |
+   +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`Quaternion<class_Quaternion>`               | :ref:`get_root_motion_rotation_accumulator<class_AnimationMixer_method_get_root_motion_rotation_accumulator>` **(** **)** |const|                                                                                                                                                                     |
+   +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`Vector3<class_Vector3>`                     | :ref:`get_root_motion_scale<class_AnimationMixer_method_get_root_motion_scale>` **(** **)** |const|                                                                                                                                                                                                   |
+   +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`Vector3<class_Vector3>`                     | :ref:`get_root_motion_scale_accumulator<class_AnimationMixer_method_get_root_motion_scale_accumulator>` **(** **)** |const|                                                                                                                                                                           |
+   +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                           | :ref:`has_animation<class_AnimationMixer_method_has_animation>` **(** :ref:`StringName<class_StringName>` name **)** |const|                                                                                                                                                                          |
+   +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                           | :ref:`has_animation_library<class_AnimationMixer_method_has_animation_library>` **(** :ref:`StringName<class_StringName>` name **)** |const|                                                                                                                                                          |
+   +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | void                                              | :ref:`remove_animation_library<class_AnimationMixer_method_remove_animation_library>` **(** :ref:`StringName<class_StringName>` name **)**                                                                                                                                                            |
+   +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | void                                              | :ref:`rename_animation_library<class_AnimationMixer_method_rename_animation_library>` **(** :ref:`StringName<class_StringName>` name, :ref:`StringName<class_StringName>` newname **)**                                                                                                               |
+   +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+.. rst-class:: classref-section-separator
+
+----
+
+.. rst-class:: classref-descriptions-group
+
+Signals
+-------
+
+.. _class_AnimationMixer_signal_animation_finished:
+
+.. rst-class:: classref-signal
+
+**animation_finished** **(** :ref:`StringName<class_StringName>` anim_name **)**
+
+Notifies when an animation finished playing.
+
+\ **Note:** This signal is not emitted if an animation is looping.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationMixer_signal_animation_libraries_updated:
+
+.. rst-class:: classref-signal
+
+**animation_libraries_updated** **(** **)**
+
+Notifies when the animation libraries have changed.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationMixer_signal_animation_list_changed:
+
+.. rst-class:: classref-signal
+
+**animation_list_changed** **(** **)**
+
+Notifies when an animation list is changed.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationMixer_signal_animation_started:
+
+.. rst-class:: classref-signal
+
+**animation_started** **(** :ref:`StringName<class_StringName>` anim_name **)**
+
+Notifies when an animation starts playing.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationMixer_signal_caches_cleared:
+
+.. rst-class:: classref-signal
+
+**caches_cleared** **(** **)**
+
+Notifies when the caches have been cleared, either automatically, or manually via :ref:`clear_caches<class_AnimationMixer_method_clear_caches>`.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationMixer_signal_mixer_updated:
+
+.. rst-class:: classref-signal
+
+**mixer_updated** **(** **)**
+
+Editor only. Notifies when the property have been updated to update dummy :ref:`AnimationPlayer<class_AnimationPlayer>` in animation player editor.
+
+.. rst-class:: classref-section-separator
+
+----
+
+.. rst-class:: classref-descriptions-group
+
+Enumerations
+------------
+
+.. _enum_AnimationMixer_AnimationCallbackModeProcess:
+
+.. rst-class:: classref-enumeration
+
+enum **AnimationCallbackModeProcess**:
+
+.. _class_AnimationMixer_constant_ANIMATION_CALLBACK_MODE_PROCESS_PHYSICS:
+
+.. rst-class:: classref-enumeration-constant
+
+:ref:`AnimationCallbackModeProcess<enum_AnimationMixer_AnimationCallbackModeProcess>` **ANIMATION_CALLBACK_MODE_PROCESS_PHYSICS** = ``0``
+
+Process animation during physics frames (see :ref:`Node.NOTIFICATION_INTERNAL_PHYSICS_PROCESS<class_Node_constant_NOTIFICATION_INTERNAL_PHYSICS_PROCESS>`). This is especially useful when animating physics bodies.
+
+.. _class_AnimationMixer_constant_ANIMATION_CALLBACK_MODE_PROCESS_IDLE:
+
+.. rst-class:: classref-enumeration-constant
+
+:ref:`AnimationCallbackModeProcess<enum_AnimationMixer_AnimationCallbackModeProcess>` **ANIMATION_CALLBACK_MODE_PROCESS_IDLE** = ``1``
+
+Process animation during process frames (see :ref:`Node.NOTIFICATION_INTERNAL_PROCESS<class_Node_constant_NOTIFICATION_INTERNAL_PROCESS>`).
+
+.. _class_AnimationMixer_constant_ANIMATION_CALLBACK_MODE_PROCESS_MANUAL:
+
+.. rst-class:: classref-enumeration-constant
+
+:ref:`AnimationCallbackModeProcess<enum_AnimationMixer_AnimationCallbackModeProcess>` **ANIMATION_CALLBACK_MODE_PROCESS_MANUAL** = ``2``
+
+Do not process animation. Use :ref:`advance<class_AnimationMixer_method_advance>` to process the animation manually.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _enum_AnimationMixer_AnimationCallbackModeMethod:
+
+.. rst-class:: classref-enumeration
+
+enum **AnimationCallbackModeMethod**:
+
+.. _class_AnimationMixer_constant_ANIMATION_CALLBACK_MODE_METHOD_DEFERRED:
+
+.. rst-class:: classref-enumeration-constant
+
+:ref:`AnimationCallbackModeMethod<enum_AnimationMixer_AnimationCallbackModeMethod>` **ANIMATION_CALLBACK_MODE_METHOD_DEFERRED** = ``0``
+
+Batch method calls during the animation process, then do the calls after events are processed. This avoids bugs involving deleting nodes or modifying the AnimationPlayer while playing.
+
+.. _class_AnimationMixer_constant_ANIMATION_CALLBACK_MODE_METHOD_IMMEDIATE:
+
+.. rst-class:: classref-enumeration-constant
+
+:ref:`AnimationCallbackModeMethod<enum_AnimationMixer_AnimationCallbackModeMethod>` **ANIMATION_CALLBACK_MODE_METHOD_IMMEDIATE** = ``1``
+
+Make method calls immediately when reached in the animation.
+
+.. rst-class:: classref-section-separator
+
+----
+
+.. rst-class:: classref-descriptions-group
+
+Property Descriptions
+---------------------
+
+.. _class_AnimationMixer_property_active:
+
+.. rst-class:: classref-property
+
+:ref:`bool<class_bool>` **active** = ``true``
+
+.. rst-class:: classref-property-setget
+
+- void **set_active** **(** :ref:`bool<class_bool>` value **)**
+- :ref:`bool<class_bool>` **is_active** **(** **)**
+
+If ``true``, the **AnimationMixer** will be processing.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationMixer_property_audio_max_polyphony:
+
+.. rst-class:: classref-property
+
+:ref:`int<class_int>` **audio_max_polyphony** = ``32``
+
+.. rst-class:: classref-property-setget
+
+- void **set_audio_max_polyphony** **(** :ref:`int<class_int>` value **)**
+- :ref:`int<class_int>` **get_audio_max_polyphony** **(** **)**
+
+The number of possible simultaneous sounds for each of the assigned AudioStreamPlayers.
+
+For example, if this value is ``32`` and the animation has two audio tracks, the two :ref:`AudioStreamPlayer<class_AudioStreamPlayer>`\ s assigned can play simultaneously up to ``32`` voices each.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationMixer_property_callback_mode_method:
+
+.. rst-class:: classref-property
+
+:ref:`AnimationCallbackModeMethod<enum_AnimationMixer_AnimationCallbackModeMethod>` **callback_mode_method** = ``0``
+
+.. rst-class:: classref-property-setget
+
+- void **set_callback_mode_method** **(** :ref:`AnimationCallbackModeMethod<enum_AnimationMixer_AnimationCallbackModeMethod>` value **)**
+- :ref:`AnimationCallbackModeMethod<enum_AnimationMixer_AnimationCallbackModeMethod>` **get_callback_mode_method** **(** **)**
+
+The call mode to use for Call Method tracks.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationMixer_property_callback_mode_process:
+
+.. rst-class:: classref-property
+
+:ref:`AnimationCallbackModeProcess<enum_AnimationMixer_AnimationCallbackModeProcess>` **callback_mode_process** = ``1``
+
+.. rst-class:: classref-property-setget
+
+- void **set_callback_mode_process** **(** :ref:`AnimationCallbackModeProcess<enum_AnimationMixer_AnimationCallbackModeProcess>` value **)**
+- :ref:`AnimationCallbackModeProcess<enum_AnimationMixer_AnimationCallbackModeProcess>` **get_callback_mode_process** **(** **)**
+
+The process notification in which to update animations.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationMixer_property_deterministic:
+
+.. rst-class:: classref-property
+
+:ref:`bool<class_bool>` **deterministic** = ``false``
+
+.. rst-class:: classref-property-setget
+
+- void **set_deterministic** **(** :ref:`bool<class_bool>` value **)**
+- :ref:`bool<class_bool>` **is_deterministic** **(** **)**
+
+If ``true``, the blending uses the deterministic algorithm. The total weight is not normalized and the result is accumulated with an initial value (``0`` or a ``"RESET"`` animation if present).
+
+This means that if the total amount of blending is ``0.0``, the result is equal to the ``"RESET"`` animation.
+
+If the number of tracks between the blended animations is different, the animation with the missing track is treated as if it had the initial value.
+
+If ``false``, The blend does not use the deterministic algorithm. The total weight is normalized and always ``1.0``. If the number of tracks between the blended animations is different, nothing is done about the animation that is missing a track.
+
+\ **Note:** In :ref:`AnimationTree<class_AnimationTree>`, the blending with :ref:`AnimationNodeAdd2<class_AnimationNodeAdd2>`, :ref:`AnimationNodeAdd3<class_AnimationNodeAdd3>`, :ref:`AnimationNodeSub2<class_AnimationNodeSub2>` or the weight greater than ``1.0`` may produce unexpected results.
+
+For example, if :ref:`AnimationNodeAdd2<class_AnimationNodeAdd2>` blends two nodes with the amount ``1.0``, then total weight is ``2.0`` but it will be normalized to make the total amount ``1.0`` and the result will be equal to :ref:`AnimationNodeBlend2<class_AnimationNodeBlend2>` with the amount ``0.5``.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationMixer_property_reset_on_save:
+
+.. rst-class:: classref-property
+
+:ref:`bool<class_bool>` **reset_on_save** = ``true``
+
+.. rst-class:: classref-property-setget
+
+- void **set_reset_on_save_enabled** **(** :ref:`bool<class_bool>` value **)**
+- :ref:`bool<class_bool>` **is_reset_on_save_enabled** **(** **)**
+
+This is used by the editor. If set to ``true``, the scene will be saved with the effects of the reset animation (the animation with the key ``"RESET"``) applied as if it had been seeked to time 0, with the editor keeping the values that the scene had before saving.
+
+This makes it more convenient to preview and edit animations in the editor, as changes to the scene will not be saved as long as they are set in the reset animation.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationMixer_property_root_motion_track:
+
+.. rst-class:: classref-property
+
+:ref:`NodePath<class_NodePath>` **root_motion_track** = ``NodePath("")``
+
+.. rst-class:: classref-property-setget
+
+- void **set_root_motion_track** **(** :ref:`NodePath<class_NodePath>` value **)**
+- :ref:`NodePath<class_NodePath>` **get_root_motion_track** **(** **)**
+
+The path to the Animation track used for root motion. Paths must be valid scene-tree paths to a node, and must be specified starting from the parent node of the node that will reproduce the animation. To specify a track that controls properties or bones, append its name after the path, separated by ``":"``. For example, ``"character/skeleton:ankle"`` or ``"character/mesh:transform/local"``.
+
+If the track has type :ref:`Animation.TYPE_POSITION_3D<class_Animation_constant_TYPE_POSITION_3D>`, :ref:`Animation.TYPE_ROTATION_3D<class_Animation_constant_TYPE_ROTATION_3D>` or :ref:`Animation.TYPE_SCALE_3D<class_Animation_constant_TYPE_SCALE_3D>` the transformation will be canceled visually, and the animation will appear to stay in place. See also :ref:`get_root_motion_position<class_AnimationMixer_method_get_root_motion_position>`, :ref:`get_root_motion_rotation<class_AnimationMixer_method_get_root_motion_rotation>`, :ref:`get_root_motion_scale<class_AnimationMixer_method_get_root_motion_scale>` and :ref:`RootMotionView<class_RootMotionView>`.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationMixer_property_root_node:
+
+.. rst-class:: classref-property
+
+:ref:`NodePath<class_NodePath>` **root_node** = ``NodePath("..")``
+
+.. rst-class:: classref-property-setget
+
+- void **set_root_node** **(** :ref:`NodePath<class_NodePath>` value **)**
+- :ref:`NodePath<class_NodePath>` **get_root_node** **(** **)**
+
+The node from which node path references will travel.
+
+.. rst-class:: classref-section-separator
+
+----
+
+.. rst-class:: classref-descriptions-group
+
+Method Descriptions
+-------------------
+
+.. _class_AnimationMixer_method__post_process_key_value:
+
+.. rst-class:: classref-method
+
+:ref:`Variant<class_Variant>` **_post_process_key_value** **(** :ref:`Animation<class_Animation>` animation, :ref:`int<class_int>` track, :ref:`Variant<class_Variant>` value, :ref:`Object<class_Object>` object, :ref:`int<class_int>` object_idx **)** |virtual| |const|
+
+A virtual function for processing after key getting during playback.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationMixer_method_add_animation_library:
+
+.. rst-class:: classref-method
+
+:ref:`Error<enum_@GlobalScope_Error>` **add_animation_library** **(** :ref:`StringName<class_StringName>` name, :ref:`AnimationLibrary<class_AnimationLibrary>` library **)**
+
+Adds ``library`` to the animation player, under the key ``name``.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationMixer_method_advance:
+
+.. rst-class:: classref-method
+
+void **advance** **(** :ref:`float<class_float>` delta **)**
+
+Manually advance the animations by the specified time (in seconds).
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationMixer_method_clear_caches:
+
+.. rst-class:: classref-method
+
+void **clear_caches** **(** **)**
+
+**AnimationMixer** caches animated nodes. It may not notice if a node disappears; :ref:`clear_caches<class_AnimationMixer_method_clear_caches>` forces it to update the cache again.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationMixer_method_find_animation:
+
+.. rst-class:: classref-method
+
+:ref:`StringName<class_StringName>` **find_animation** **(** :ref:`Animation<class_Animation>` animation **)** |const|
+
+Returns the key of ``animation`` or an empty :ref:`StringName<class_StringName>` if not found.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationMixer_method_find_animation_library:
+
+.. rst-class:: classref-method
+
+:ref:`StringName<class_StringName>` **find_animation_library** **(** :ref:`Animation<class_Animation>` animation **)** |const|
+
+Returns the key for the :ref:`AnimationLibrary<class_AnimationLibrary>` that contains ``animation`` or an empty :ref:`StringName<class_StringName>` if not found.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationMixer_method_get_animation:
+
+.. rst-class:: classref-method
+
+:ref:`Animation<class_Animation>` **get_animation** **(** :ref:`StringName<class_StringName>` name **)** |const|
+
+Returns the :ref:`Animation<class_Animation>` with the key ``name``. If the animation does not exist, ``null`` is returned and an error is logged.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationMixer_method_get_animation_library:
+
+.. rst-class:: classref-method
+
+:ref:`AnimationLibrary<class_AnimationLibrary>` **get_animation_library** **(** :ref:`StringName<class_StringName>` name **)** |const|
+
+Returns the first :ref:`AnimationLibrary<class_AnimationLibrary>` with key ``name`` or ``null`` if not found.
+
+To get the :ref:`AnimationPlayer<class_AnimationPlayer>`'s global animation library, use ``get_animation_library("")``.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationMixer_method_get_animation_library_list:
+
+.. rst-class:: classref-method
+
+:ref:`StringName[]<class_StringName>` **get_animation_library_list** **(** **)** |const|
+
+Returns the list of stored library keys.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationMixer_method_get_animation_list:
+
+.. rst-class:: classref-method
+
+:ref:`PackedStringArray<class_PackedStringArray>` **get_animation_list** **(** **)** |const|
+
+Returns the list of stored animation keys.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationMixer_method_get_root_motion_position:
+
+.. rst-class:: classref-method
+
+:ref:`Vector3<class_Vector3>` **get_root_motion_position** **(** **)** |const|
+
+Retrieve the motion delta of position with the :ref:`root_motion_track<class_AnimationMixer_property_root_motion_track>` as a :ref:`Vector3<class_Vector3>` that can be used elsewhere.
+
+If :ref:`root_motion_track<class_AnimationMixer_property_root_motion_track>` is not a path to a track of type :ref:`Animation.TYPE_POSITION_3D<class_Animation_constant_TYPE_POSITION_3D>`, returns ``Vector3(0, 0, 0)``.
+
+See also :ref:`root_motion_track<class_AnimationMixer_property_root_motion_track>` and :ref:`RootMotionView<class_RootMotionView>`.
+
+The most basic example is applying position to :ref:`CharacterBody3D<class_CharacterBody3D>`:
+
+
+.. tabs::
+
+ .. code-tab:: gdscript
+
+    var current_rotation: Quaternion
+    
+    func _process(delta):
+        if Input.is_action_just_pressed("animate"):
+            current_rotation = get_quaternion()
+            state_machine.travel("Animate")
+        var velocity: Vector3 = current_rotation * animation_tree.get_root_motion_position() / delta
+        set_velocity(velocity)
+        move_and_slide()
+
+
+
+By using this in combination with :ref:`get_root_motion_position_accumulator<class_AnimationMixer_method_get_root_motion_position_accumulator>`, you can apply the root motion position more correctly to account for the rotation of the node.
+
+
+.. tabs::
+
+ .. code-tab:: gdscript
+
+    func _process(delta):
+        if Input.is_action_just_pressed("animate"):
+            state_machine.travel("Animate")
+        set_quaternion(get_quaternion() * animation_tree.get_root_motion_rotation())
+        var velocity: Vector3 = (animation_tree.get_root_motion_rotation_accumulator().inverse() * get_quaternion()) * animation_tree.get_root_motion_position() / delta
+        set_velocity(velocity)
+        move_and_slide()
+
+
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationMixer_method_get_root_motion_position_accumulator:
+
+.. rst-class:: classref-method
+
+:ref:`Vector3<class_Vector3>` **get_root_motion_position_accumulator** **(** **)** |const|
+
+Retrieve the blended value of the position tracks with the :ref:`root_motion_track<class_AnimationMixer_property_root_motion_track>` as a :ref:`Vector3<class_Vector3>` that can be used elsewhere.
+
+This is useful in cases where you want to respect the initial key values of the animation.
+
+For example, if an animation with only one key ``Vector3(0, 0, 0)`` is played in the previous frame and then an animation with only one key ``Vector3(1, 0, 1)`` is played in the next frame, the difference can be calculated as follows:
+
+
+.. tabs::
+
+ .. code-tab:: gdscript
+
+    var prev_root_motion_position_accumulator: Vector3
+    
+    func _process(delta):
+        if Input.is_action_just_pressed("animate"):
+            state_machine.travel("Animate")
+        var current_root_motion_position_accumulator: Vector3 = animation_tree.get_root_motion_position_accumulator()
+        var difference: Vector3 = current_root_motion_position_accumulator - prev_root_motion_position_accumulator
+        prev_root_motion_position_accumulator = current_root_motion_position_accumulator
+        transform.origin += difference
+
+
+
+However, if the animation loops, an unintended discrete change may occur, so this is only useful for some simple use cases.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationMixer_method_get_root_motion_rotation:
+
+.. rst-class:: classref-method
+
+:ref:`Quaternion<class_Quaternion>` **get_root_motion_rotation** **(** **)** |const|
+
+Retrieve the motion delta of rotation with the :ref:`root_motion_track<class_AnimationMixer_property_root_motion_track>` as a :ref:`Quaternion<class_Quaternion>` that can be used elsewhere.
+
+If :ref:`root_motion_track<class_AnimationMixer_property_root_motion_track>` is not a path to a track of type :ref:`Animation.TYPE_ROTATION_3D<class_Animation_constant_TYPE_ROTATION_3D>`, returns ``Quaternion(0, 0, 0, 1)``.
+
+See also :ref:`root_motion_track<class_AnimationMixer_property_root_motion_track>` and :ref:`RootMotionView<class_RootMotionView>`.
+
+The most basic example is applying rotation to :ref:`CharacterBody3D<class_CharacterBody3D>`:
+
+
+.. tabs::
+
+ .. code-tab:: gdscript
+
+    func _process(delta):
+        if Input.is_action_just_pressed("animate"):
+            state_machine.travel("Animate")
+        set_quaternion(get_quaternion() * animation_tree.get_root_motion_rotation())
+
+
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationMixer_method_get_root_motion_rotation_accumulator:
+
+.. rst-class:: classref-method
+
+:ref:`Quaternion<class_Quaternion>` **get_root_motion_rotation_accumulator** **(** **)** |const|
+
+Retrieve the blended value of the rotation tracks with the :ref:`root_motion_track<class_AnimationMixer_property_root_motion_track>` as a :ref:`Quaternion<class_Quaternion>` that can be used elsewhere.
+
+This is necessary to apply the root motion position correctly, taking rotation into account. See also :ref:`get_root_motion_position<class_AnimationMixer_method_get_root_motion_position>`.
+
+Also, this is useful in cases where you want to respect the initial key values of the animation.
+
+For example, if an animation with only one key ``Quaternion(0, 0, 0, 1)`` is played in the previous frame and then an animation with only one key ``Quaternion(0, 0.707, 0, 0.707)`` is played in the next frame, the difference can be calculated as follows:
+
+
+.. tabs::
+
+ .. code-tab:: gdscript
+
+    var prev_root_motion_rotation_accumulator: Quaternion
+    
+    func _process(delta):
+        if Input.is_action_just_pressed("animate"):
+            state_machine.travel("Animate")
+        var current_root_motion_rotation_accumulator: Quaternion = animation_tree.get_root_motion_Quaternion_accumulator()
+        var difference: Quaternion = prev_root_motion_rotation_accumulator.inverse() * current_root_motion_rotation_accumulator
+        prev_root_motion_rotation_accumulator = current_root_motion_rotation_accumulator
+        transform.basis *= difference
+
+
+
+However, if the animation loops, an unintended discrete change may occur, so this is only useful for some simple use cases.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationMixer_method_get_root_motion_scale:
+
+.. rst-class:: classref-method
+
+:ref:`Vector3<class_Vector3>` **get_root_motion_scale** **(** **)** |const|
+
+Retrieve the motion delta of scale with the :ref:`root_motion_track<class_AnimationMixer_property_root_motion_track>` as a :ref:`Vector3<class_Vector3>` that can be used elsewhere.
+
+If :ref:`root_motion_track<class_AnimationMixer_property_root_motion_track>` is not a path to a track of type :ref:`Animation.TYPE_SCALE_3D<class_Animation_constant_TYPE_SCALE_3D>`, returns ``Vector3(0, 0, 0)``.
+
+See also :ref:`root_motion_track<class_AnimationMixer_property_root_motion_track>` and :ref:`RootMotionView<class_RootMotionView>`.
+
+The most basic example is applying scale to :ref:`CharacterBody3D<class_CharacterBody3D>`:
+
+
+.. tabs::
+
+ .. code-tab:: gdscript
+
+    var current_scale: Vector3 = Vector3(1, 1, 1)
+    var scale_accum: Vector3 = Vector3(1, 1, 1)
+    
+    func _process(delta):
+        if Input.is_action_just_pressed("animate"):
+            current_scale = get_scale()
+            scale_accum = Vector3(1, 1, 1)
+            state_machine.travel("Animate")
+        scale_accum += animation_tree.get_root_motion_scale()
+        set_scale(current_scale * scale_accum)
+
+
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationMixer_method_get_root_motion_scale_accumulator:
+
+.. rst-class:: classref-method
+
+:ref:`Vector3<class_Vector3>` **get_root_motion_scale_accumulator** **(** **)** |const|
+
+Retrieve the blended value of the scale tracks with the :ref:`root_motion_track<class_AnimationMixer_property_root_motion_track>` as a :ref:`Vector3<class_Vector3>` that can be used elsewhere.
+
+For example, if an animation with only one key ``Vector3(1, 1, 1)`` is played in the previous frame and then an animation with only one key ``Vector3(2, 2, 2)`` is played in the next frame, the difference can be calculated as follows:
+
+
+.. tabs::
+
+ .. code-tab:: gdscript
+
+    var prev_root_motion_scale_accumulator: Vector3
+    
+    func _process(delta):
+        if Input.is_action_just_pressed("animate"):
+            state_machine.travel("Animate")
+        var current_root_motion_scale_accumulator: Vector3 = animation_tree.get_root_motion_scale_accumulator()
+        var difference: Vector3 = current_root_motion_scale_accumulator - prev_root_motion_scale_accumulator
+        prev_root_motion_scale_accumulator = current_root_motion_scale_accumulator
+        transform.basis = transform.basis.scaled(difference)
+
+
+
+However, if the animation loops, an unintended discrete change may occur, so this is only useful for some simple use cases.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationMixer_method_has_animation:
+
+.. rst-class:: classref-method
+
+:ref:`bool<class_bool>` **has_animation** **(** :ref:`StringName<class_StringName>` name **)** |const|
+
+Returns ``true`` if the :ref:`AnimationPlayer<class_AnimationPlayer>` stores an :ref:`Animation<class_Animation>` with key ``name``.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationMixer_method_has_animation_library:
+
+.. rst-class:: classref-method
+
+:ref:`bool<class_bool>` **has_animation_library** **(** :ref:`StringName<class_StringName>` name **)** |const|
+
+Returns ``true`` if the :ref:`AnimationPlayer<class_AnimationPlayer>` stores an :ref:`AnimationLibrary<class_AnimationLibrary>` with key ``name``.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationMixer_method_remove_animation_library:
+
+.. rst-class:: classref-method
+
+void **remove_animation_library** **(** :ref:`StringName<class_StringName>` name **)**
+
+Removes the :ref:`AnimationLibrary<class_AnimationLibrary>` associated with the key ``name``.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationMixer_method_rename_animation_library:
+
+.. rst-class:: classref-method
+
+void **rename_animation_library** **(** :ref:`StringName<class_StringName>` name, :ref:`StringName<class_StringName>` newname **)**
+
+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.)`
+.. |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.)`

+ 115 - 395
classes/class_animationplayer.rst

@@ -10,7 +10,7 @@
 AnimationPlayer
 AnimationPlayer
 ===============
 ===============
 
 
-**Inherits:** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AnimationMixer<class_AnimationMixer>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
 
 A node used for animation playback.
 A node used for animation playback.
 
 
@@ -46,35 +46,23 @@ Properties
 .. table::
 .. table::
    :widths: auto
    :widths: auto
 
 
-   +--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
-   | :ref:`String<class_String>`                                                    | :ref:`assigned_animation<class_AnimationPlayer_property_assigned_animation>`                   |                    |
-   +--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
-   | :ref:`int<class_int>`                                                          | :ref:`audio_max_polyphony<class_AnimationPlayer_property_audio_max_polyphony>`                 | ``32``             |
-   +--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
-   | :ref:`String<class_String>`                                                    | :ref:`autoplay<class_AnimationPlayer_property_autoplay>`                                       | ``""``             |
-   +--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
-   | :ref:`String<class_String>`                                                    | :ref:`current_animation<class_AnimationPlayer_property_current_animation>`                     | ``""``             |
-   +--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
-   | :ref:`float<class_float>`                                                      | :ref:`current_animation_length<class_AnimationPlayer_property_current_animation_length>`       |                    |
-   +--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
-   | :ref:`float<class_float>`                                                      | :ref:`current_animation_position<class_AnimationPlayer_property_current_animation_position>`   |                    |
-   +--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
-   | :ref:`AnimationMethodCallMode<enum_AnimationPlayer_AnimationMethodCallMode>`   | :ref:`method_call_mode<class_AnimationPlayer_property_method_call_mode>`                       | ``0``              |
-   +--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
-   | :ref:`bool<class_bool>`                                                        | :ref:`movie_quit_on_finish<class_AnimationPlayer_property_movie_quit_on_finish>`               | ``false``          |
-   +--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
-   | :ref:`bool<class_bool>`                                                        | :ref:`playback_active<class_AnimationPlayer_property_playback_active>`                         |                    |
-   +--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
-   | :ref:`float<class_float>`                                                      | :ref:`playback_default_blend_time<class_AnimationPlayer_property_playback_default_blend_time>` | ``0.0``            |
-   +--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
-   | :ref:`AnimationProcessCallback<enum_AnimationPlayer_AnimationProcessCallback>` | :ref:`playback_process_mode<class_AnimationPlayer_property_playback_process_mode>`             | ``1``              |
-   +--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
-   | :ref:`bool<class_bool>`                                                        | :ref:`reset_on_save<class_AnimationPlayer_property_reset_on_save>`                             | ``true``           |
-   +--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
-   | :ref:`NodePath<class_NodePath>`                                                | :ref:`root_node<class_AnimationPlayer_property_root_node>`                                     | ``NodePath("..")`` |
-   +--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
-   | :ref:`float<class_float>`                                                      | :ref:`speed_scale<class_AnimationPlayer_property_speed_scale>`                                 | ``1.0``            |
-   +--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
+   +-----------------------------+------------------------------------------------------------------------------------------------+-----------+
+   | :ref:`String<class_String>` | :ref:`assigned_animation<class_AnimationPlayer_property_assigned_animation>`                   |           |
+   +-----------------------------+------------------------------------------------------------------------------------------------+-----------+
+   | :ref:`String<class_String>` | :ref:`autoplay<class_AnimationPlayer_property_autoplay>`                                       | ``""``    |
+   +-----------------------------+------------------------------------------------------------------------------------------------+-----------+
+   | :ref:`String<class_String>` | :ref:`current_animation<class_AnimationPlayer_property_current_animation>`                     | ``""``    |
+   +-----------------------------+------------------------------------------------------------------------------------------------+-----------+
+   | :ref:`float<class_float>`   | :ref:`current_animation_length<class_AnimationPlayer_property_current_animation_length>`       |           |
+   +-----------------------------+------------------------------------------------------------------------------------------------+-----------+
+   | :ref:`float<class_float>`   | :ref:`current_animation_position<class_AnimationPlayer_property_current_animation_position>`   |           |
+   +-----------------------------+------------------------------------------------------------------------------------------------+-----------+
+   | :ref:`bool<class_bool>`     | :ref:`movie_quit_on_finish<class_AnimationPlayer_property_movie_quit_on_finish>`               | ``false`` |
+   +-----------------------------+------------------------------------------------------------------------------------------------+-----------+
+   | :ref:`float<class_float>`   | :ref:`playback_default_blend_time<class_AnimationPlayer_property_playback_default_blend_time>` | ``0.0``   |
+   +-----------------------------+------------------------------------------------------------------------------------------------+-----------+
+   | :ref:`float<class_float>`   | :ref:`speed_scale<class_AnimationPlayer_property_speed_scale>`                                 | ``1.0``   |
+   +-----------------------------+------------------------------------------------------------------------------------------------+-----------+
 
 
 .. rst-class:: classref-reftable-group
 .. rst-class:: classref-reftable-group
 
 
@@ -84,63 +72,47 @@ Methods
 .. table::
 .. table::
    :widths: auto
    :widths: auto
 
 
-   +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`Variant<class_Variant>`                     | :ref:`_post_process_key_value<class_AnimationPlayer_method__post_process_key_value>` **(** :ref:`Animation<class_Animation>` animation, :ref:`int<class_int>` track, :ref:`Variant<class_Variant>` value, :ref:`Object<class_Object>` object, :ref:`int<class_int>` object_idx **)** |virtual| |const| |
-   +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`Error<enum_@GlobalScope_Error>`             | :ref:`add_animation_library<class_AnimationPlayer_method_add_animation_library>` **(** :ref:`StringName<class_StringName>` name, :ref:`AnimationLibrary<class_AnimationLibrary>` library **)**                                                                                                         |
-   +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | void                                              | :ref:`advance<class_AnimationPlayer_method_advance>` **(** :ref:`float<class_float>` delta **)**                                                                                                                                                                                                       |
-   +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`StringName<class_StringName>`               | :ref:`animation_get_next<class_AnimationPlayer_method_animation_get_next>` **(** :ref:`StringName<class_StringName>` anim_from **)** |const|                                                                                                                                                           |
-   +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | void                                              | :ref:`animation_set_next<class_AnimationPlayer_method_animation_set_next>` **(** :ref:`StringName<class_StringName>` anim_from, :ref:`StringName<class_StringName>` anim_to **)**                                                                                                                      |
-   +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | void                                              | :ref:`clear_caches<class_AnimationPlayer_method_clear_caches>` **(** **)**                                                                                                                                                                                                                             |
-   +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | void                                              | :ref:`clear_queue<class_AnimationPlayer_method_clear_queue>` **(** **)**                                                                                                                                                                                                                               |
-   +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`StringName<class_StringName>`               | :ref:`find_animation<class_AnimationPlayer_method_find_animation>` **(** :ref:`Animation<class_Animation>` animation **)** |const|                                                                                                                                                                     |
-   +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`StringName<class_StringName>`               | :ref:`find_animation_library<class_AnimationPlayer_method_find_animation_library>` **(** :ref:`Animation<class_Animation>` animation **)** |const|                                                                                                                                                     |
-   +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`Animation<class_Animation>`                 | :ref:`get_animation<class_AnimationPlayer_method_get_animation>` **(** :ref:`StringName<class_StringName>` name **)** |const|                                                                                                                                                                          |
-   +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`AnimationLibrary<class_AnimationLibrary>`   | :ref:`get_animation_library<class_AnimationPlayer_method_get_animation_library>` **(** :ref:`StringName<class_StringName>` name **)** |const|                                                                                                                                                          |
-   +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`StringName[]<class_StringName>`             | :ref:`get_animation_library_list<class_AnimationPlayer_method_get_animation_library_list>` **(** **)** |const|                                                                                                                                                                                         |
-   +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`get_animation_list<class_AnimationPlayer_method_get_animation_list>` **(** **)** |const|                                                                                                                                                                                                         |
-   +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`float<class_float>`                         | :ref:`get_blend_time<class_AnimationPlayer_method_get_blend_time>` **(** :ref:`StringName<class_StringName>` anim_from, :ref:`StringName<class_StringName>` anim_to **)** |const|                                                                                                                      |
-   +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`float<class_float>`                         | :ref:`get_playing_speed<class_AnimationPlayer_method_get_playing_speed>` **(** **)** |const|                                                                                                                                                                                                           |
-   +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`get_queue<class_AnimationPlayer_method_get_queue>` **(** **)**                                                                                                                                                                                                                                   |
-   +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`bool<class_bool>`                           | :ref:`has_animation<class_AnimationPlayer_method_has_animation>` **(** :ref:`StringName<class_StringName>` name **)** |const|                                                                                                                                                                          |
-   +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`bool<class_bool>`                           | :ref:`has_animation_library<class_AnimationPlayer_method_has_animation_library>` **(** :ref:`StringName<class_StringName>` name **)** |const|                                                                                                                                                          |
-   +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`bool<class_bool>`                           | :ref:`is_playing<class_AnimationPlayer_method_is_playing>` **(** **)** |const|                                                                                                                                                                                                                         |
-   +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | void                                              | :ref:`pause<class_AnimationPlayer_method_pause>` **(** **)**                                                                                                                                                                                                                                           |
-   +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | void                                              | :ref:`play<class_AnimationPlayer_method_play>` **(** :ref:`StringName<class_StringName>` name="", :ref:`float<class_float>` custom_blend=-1, :ref:`float<class_float>` custom_speed=1.0, :ref:`bool<class_bool>` from_end=false **)**                                                                  |
-   +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | void                                              | :ref:`play_backwards<class_AnimationPlayer_method_play_backwards>` **(** :ref:`StringName<class_StringName>` name="", :ref:`float<class_float>` custom_blend=-1 **)**                                                                                                                                  |
-   +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | void                                              | :ref:`queue<class_AnimationPlayer_method_queue>` **(** :ref:`StringName<class_StringName>` name **)**                                                                                                                                                                                                  |
-   +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | void                                              | :ref:`remove_animation_library<class_AnimationPlayer_method_remove_animation_library>` **(** :ref:`StringName<class_StringName>` name **)**                                                                                                                                                            |
-   +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | void                                              | :ref:`rename_animation_library<class_AnimationPlayer_method_rename_animation_library>` **(** :ref:`StringName<class_StringName>` name, :ref:`StringName<class_StringName>` newname **)**                                                                                                               |
-   +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | void                                              | :ref:`seek<class_AnimationPlayer_method_seek>` **(** :ref:`float<class_float>` seconds, :ref:`bool<class_bool>` update=false **)**                                                                                                                                                                     |
-   +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | void                                              | :ref:`set_blend_time<class_AnimationPlayer_method_set_blend_time>` **(** :ref:`StringName<class_StringName>` anim_from, :ref:`StringName<class_StringName>` anim_to, :ref:`float<class_float>` sec **)**                                                                                               |
-   +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | void                                              | :ref:`stop<class_AnimationPlayer_method_stop>` **(** :ref:`bool<class_bool>` keep_state=false **)**                                                                                                                                                                                                    |
-   +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`StringName<class_StringName>`                                            | :ref:`animation_get_next<class_AnimationPlayer_method_animation_get_next>` **(** :ref:`StringName<class_StringName>` animation_from **)** |const|                                                                                     |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | void                                                                           | :ref:`animation_set_next<class_AnimationPlayer_method_animation_set_next>` **(** :ref:`StringName<class_StringName>` animation_from, :ref:`StringName<class_StringName>` animation_to **)**                                           |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | void                                                                           | :ref:`clear_queue<class_AnimationPlayer_method_clear_queue>` **(** **)**                                                                                                                                                              |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`float<class_float>`                                                      | :ref:`get_blend_time<class_AnimationPlayer_method_get_blend_time>` **(** :ref:`StringName<class_StringName>` animation_from, :ref:`StringName<class_StringName>` animation_to **)** |const|                                           |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`AnimationMethodCallMode<enum_AnimationPlayer_AnimationMethodCallMode>`   | :ref:`get_method_call_mode<class_AnimationPlayer_method_get_method_call_mode>` **(** **)** |const|                                                                                                                                    |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`float<class_float>`                                                      | :ref:`get_playing_speed<class_AnimationPlayer_method_get_playing_speed>` **(** **)** |const|                                                                                                                                          |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`AnimationProcessCallback<enum_AnimationPlayer_AnimationProcessCallback>` | :ref:`get_process_callback<class_AnimationPlayer_method_get_process_callback>` **(** **)** |const|                                                                                                                                    |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`PackedStringArray<class_PackedStringArray>`                              | :ref:`get_queue<class_AnimationPlayer_method_get_queue>` **(** **)**                                                                                                                                                                  |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`NodePath<class_NodePath>`                                                | :ref:`get_root<class_AnimationPlayer_method_get_root>` **(** **)** |const|                                                                                                                                                            |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                                                        | :ref:`is_playing<class_AnimationPlayer_method_is_playing>` **(** **)** |const|                                                                                                                                                        |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | void                                                                           | :ref:`pause<class_AnimationPlayer_method_pause>` **(** **)**                                                                                                                                                                          |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | void                                                                           | :ref:`play<class_AnimationPlayer_method_play>` **(** :ref:`StringName<class_StringName>` name="", :ref:`float<class_float>` custom_blend=-1, :ref:`float<class_float>` custom_speed=1.0, :ref:`bool<class_bool>` from_end=false **)** |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | void                                                                           | :ref:`play_backwards<class_AnimationPlayer_method_play_backwards>` **(** :ref:`StringName<class_StringName>` name="", :ref:`float<class_float>` custom_blend=-1 **)**                                                                 |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | void                                                                           | :ref:`queue<class_AnimationPlayer_method_queue>` **(** :ref:`StringName<class_StringName>` name **)**                                                                                                                                 |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | void                                                                           | :ref:`seek<class_AnimationPlayer_method_seek>` **(** :ref:`float<class_float>` seconds, :ref:`bool<class_bool>` update=false, :ref:`bool<class_bool>` update_only=false **)**                                                         |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | void                                                                           | :ref:`set_blend_time<class_AnimationPlayer_method_set_blend_time>` **(** :ref:`StringName<class_StringName>` animation_from, :ref:`StringName<class_StringName>` animation_to, :ref:`float<class_float>` sec **)**                    |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | void                                                                           | :ref:`set_method_call_mode<class_AnimationPlayer_method_set_method_call_mode>` **(** :ref:`AnimationMethodCallMode<enum_AnimationPlayer_AnimationMethodCallMode>` mode **)**                                                          |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | void                                                                           | :ref:`set_process_callback<class_AnimationPlayer_method_set_process_callback>` **(** :ref:`AnimationProcessCallback<enum_AnimationPlayer_AnimationProcessCallback>` mode **)**                                                        |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | void                                                                           | :ref:`set_root<class_AnimationPlayer_method_set_root>` **(** :ref:`NodePath<class_NodePath>` path **)**                                                                                                                               |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | void                                                                           | :ref:`stop<class_AnimationPlayer_method_stop>` **(** :ref:`bool<class_bool>` keep_state=false **)**                                                                                                                                   |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 
 .. rst-class:: classref-section-separator
 .. rst-class:: classref-section-separator
 
 
@@ -157,7 +129,7 @@ Signals
 
 
 **animation_changed** **(** :ref:`StringName<class_StringName>` old_name, :ref:`StringName<class_StringName>` new_name **)**
 **animation_changed** **(** :ref:`StringName<class_StringName>` old_name, :ref:`StringName<class_StringName>` new_name **)**
 
 
-Emitted when a queued animation plays after the previous animation finished. See :ref:`queue<class_AnimationPlayer_method_queue>`.
+Emitted when a queued animation plays after the previous animation finished. See also :ref:`queue<class_AnimationPlayer_method_queue>`.
 
 
 \ **Note:** The signal is not emitted when the animation is changed via :ref:`play<class_AnimationPlayer_method_play>` or by an :ref:`AnimationTree<class_AnimationTree>`.
 \ **Note:** The signal is not emitted when the animation is changed via :ref:`play<class_AnimationPlayer_method_play>` or by an :ref:`AnimationTree<class_AnimationTree>`.
 
 
@@ -165,63 +137,13 @@ Emitted when a queued animation plays after the previous animation finished. See
 
 
 ----
 ----
 
 
-.. _class_AnimationPlayer_signal_animation_finished:
+.. _class_AnimationPlayer_signal_current_animation_changed:
 
 
 .. rst-class:: classref-signal
 .. rst-class:: classref-signal
 
 
-**animation_finished** **(** :ref:`StringName<class_StringName>` anim_name **)**
+**current_animation_changed** **(** :ref:`String<class_String>` name **)**
 
 
-Notifies when an animation finished playing.
-
-\ **Note:** This signal is not emitted if an animation is looping.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_AnimationPlayer_signal_animation_libraries_updated:
-
-.. rst-class:: classref-signal
-
-**animation_libraries_updated** **(** **)**
-
-Notifies when the animation libraries have changed.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_AnimationPlayer_signal_animation_list_changed:
-
-.. rst-class:: classref-signal
-
-**animation_list_changed** **(** **)**
-
-Notifies when an animation list is changed.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_AnimationPlayer_signal_animation_started:
-
-.. rst-class:: classref-signal
-
-**animation_started** **(** :ref:`StringName<class_StringName>` anim_name **)**
-
-Notifies when an animation starts playing.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_AnimationPlayer_signal_caches_cleared:
-
-.. rst-class:: classref-signal
-
-**caches_cleared** **(** **)**
-
-Notifies when the caches have been cleared, either automatically, or manually via :ref:`clear_caches<class_AnimationPlayer_method_clear_caches>`.
+Emitted when :ref:`current_animation<class_AnimationPlayer_property_current_animation>` changes.
 
 
 .. rst-class:: classref-section-separator
 .. rst-class:: classref-section-separator
 
 
@@ -244,7 +166,7 @@ enum **AnimationProcessCallback**:
 
 
 :ref:`AnimationProcessCallback<enum_AnimationPlayer_AnimationProcessCallback>` **ANIMATION_PROCESS_PHYSICS** = ``0``
 :ref:`AnimationProcessCallback<enum_AnimationPlayer_AnimationProcessCallback>` **ANIMATION_PROCESS_PHYSICS** = ``0``
 
 
-Process animation during physics frames (see :ref:`Node.NOTIFICATION_INTERNAL_PHYSICS_PROCESS<class_Node_constant_NOTIFICATION_INTERNAL_PHYSICS_PROCESS>`). This is especially useful when animating physics bodies.
+For backward compatibility. See :ref:`AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_PHYSICS<class_AnimationMixer_constant_ANIMATION_CALLBACK_MODE_PROCESS_PHYSICS>`.
 
 
 .. _class_AnimationPlayer_constant_ANIMATION_PROCESS_IDLE:
 .. _class_AnimationPlayer_constant_ANIMATION_PROCESS_IDLE:
 
 
@@ -252,7 +174,7 @@ Process animation during physics frames (see :ref:`Node.NOTIFICATION_INTERNAL_PH
 
 
 :ref:`AnimationProcessCallback<enum_AnimationPlayer_AnimationProcessCallback>` **ANIMATION_PROCESS_IDLE** = ``1``
 :ref:`AnimationProcessCallback<enum_AnimationPlayer_AnimationProcessCallback>` **ANIMATION_PROCESS_IDLE** = ``1``
 
 
-Process animation during process frames (see :ref:`Node.NOTIFICATION_INTERNAL_PROCESS<class_Node_constant_NOTIFICATION_INTERNAL_PROCESS>`).
+For backward compatibility. See :ref:`AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_IDLE<class_AnimationMixer_constant_ANIMATION_CALLBACK_MODE_PROCESS_IDLE>`.
 
 
 .. _class_AnimationPlayer_constant_ANIMATION_PROCESS_MANUAL:
 .. _class_AnimationPlayer_constant_ANIMATION_PROCESS_MANUAL:
 
 
@@ -260,7 +182,7 @@ Process animation during process frames (see :ref:`Node.NOTIFICATION_INTERNAL_PR
 
 
 :ref:`AnimationProcessCallback<enum_AnimationPlayer_AnimationProcessCallback>` **ANIMATION_PROCESS_MANUAL** = ``2``
 :ref:`AnimationProcessCallback<enum_AnimationPlayer_AnimationProcessCallback>` **ANIMATION_PROCESS_MANUAL** = ``2``
 
 
-Do not process animation. Use :ref:`advance<class_AnimationPlayer_method_advance>` to process the animation manually.
+For backward compatibility. See :ref:`AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_MANUAL<class_AnimationMixer_constant_ANIMATION_CALLBACK_MODE_PROCESS_MANUAL>`.
 
 
 .. rst-class:: classref-item-separator
 .. rst-class:: classref-item-separator
 
 
@@ -278,7 +200,7 @@ enum **AnimationMethodCallMode**:
 
 
 :ref:`AnimationMethodCallMode<enum_AnimationPlayer_AnimationMethodCallMode>` **ANIMATION_METHOD_CALL_DEFERRED** = ``0``
 :ref:`AnimationMethodCallMode<enum_AnimationPlayer_AnimationMethodCallMode>` **ANIMATION_METHOD_CALL_DEFERRED** = ``0``
 
 
-Batch method calls during the animation process, then do the calls after events are processed. This avoids bugs involving deleting nodes or modifying the AnimationPlayer while playing.
+For backward compatibility. See :ref:`AnimationMixer.ANIMATION_CALLBACK_MODE_METHOD_DEFERRED<class_AnimationMixer_constant_ANIMATION_CALLBACK_MODE_METHOD_DEFERRED>`.
 
 
 .. _class_AnimationPlayer_constant_ANIMATION_METHOD_CALL_IMMEDIATE:
 .. _class_AnimationPlayer_constant_ANIMATION_METHOD_CALL_IMMEDIATE:
 
 
@@ -286,7 +208,7 @@ Batch method calls during the animation process, then do the calls after events
 
 
 :ref:`AnimationMethodCallMode<enum_AnimationPlayer_AnimationMethodCallMode>` **ANIMATION_METHOD_CALL_IMMEDIATE** = ``1``
 :ref:`AnimationMethodCallMode<enum_AnimationPlayer_AnimationMethodCallMode>` **ANIMATION_METHOD_CALL_IMMEDIATE** = ``1``
 
 
-Make method calls immediately when reached in the animation.
+For backward compatibility. See :ref:`AnimationMixer.ANIMATION_CALLBACK_MODE_METHOD_IMMEDIATE<class_AnimationMixer_constant_ANIMATION_CALLBACK_MODE_METHOD_IMMEDIATE>`.
 
 
 .. rst-class:: classref-section-separator
 .. rst-class:: classref-section-separator
 
 
@@ -314,25 +236,6 @@ If playing, the current animation's key, otherwise, the animation last played. W
 
 
 ----
 ----
 
 
-.. _class_AnimationPlayer_property_audio_max_polyphony:
-
-.. rst-class:: classref-property
-
-:ref:`int<class_int>` **audio_max_polyphony** = ``32``
-
-.. rst-class:: classref-property-setget
-
-- void **set_audio_max_polyphony** **(** :ref:`int<class_int>` value **)**
-- :ref:`int<class_int>` **get_audio_max_polyphony** **(** **)**
-
-The number of possible simultaneous sounds for each of the assigned AudioStreamPlayers.
-
-For example, if this value is ``32`` and the animation has two audio tracks, the two :ref:`AudioStreamPlayer<class_AudioStreamPlayer>`\ s assigned can play simultaneously up to ``32`` voices each.
-
-.. rst-class:: classref-item-separator
-
-----
-
 .. _class_AnimationPlayer_property_autoplay:
 .. _class_AnimationPlayer_property_autoplay:
 
 
 .. rst-class:: classref-property
 .. rst-class:: classref-property
@@ -401,23 +304,6 @@ The position (in seconds) of the currently playing animation.
 
 
 ----
 ----
 
 
-.. _class_AnimationPlayer_property_method_call_mode:
-
-.. rst-class:: classref-property
-
-:ref:`AnimationMethodCallMode<enum_AnimationPlayer_AnimationMethodCallMode>` **method_call_mode** = ``0``
-
-.. rst-class:: classref-property-setget
-
-- void **set_method_call_mode** **(** :ref:`AnimationMethodCallMode<enum_AnimationPlayer_AnimationMethodCallMode>` value **)**
-- :ref:`AnimationMethodCallMode<enum_AnimationPlayer_AnimationMethodCallMode>` **get_method_call_mode** **(** **)**
-
-The call mode to use for Call Method tracks.
-
-.. rst-class:: classref-item-separator
-
-----
-
 .. _class_AnimationPlayer_property_movie_quit_on_finish:
 .. _class_AnimationPlayer_property_movie_quit_on_finish:
 
 
 .. rst-class:: classref-property
 .. rst-class:: classref-property
@@ -431,24 +317,7 @@ The call mode to use for Call Method tracks.
 
 
 If ``true`` and the engine is running in Movie Maker mode (see :ref:`MovieWriter<class_MovieWriter>`), exits the engine with :ref:`SceneTree.quit<class_SceneTree_method_quit>` as soon as an animation is done playing in this **AnimationPlayer**. A message is printed when the engine quits for this reason.
 If ``true`` and the engine is running in Movie Maker mode (see :ref:`MovieWriter<class_MovieWriter>`), exits the engine with :ref:`SceneTree.quit<class_SceneTree_method_quit>` as soon as an animation is done playing in this **AnimationPlayer**. A message is printed when the engine quits for this reason.
 
 
-\ **Note:** This obeys the same logic as the :ref:`animation_finished<class_AnimationPlayer_signal_animation_finished>` signal, so it will not quit the engine if the animation is set to be looping.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_AnimationPlayer_property_playback_active:
-
-.. rst-class:: classref-property
-
-:ref:`bool<class_bool>` **playback_active**
-
-.. rst-class:: classref-property-setget
-
-- void **set_active** **(** :ref:`bool<class_bool>` value **)**
-- :ref:`bool<class_bool>` **is_active** **(** **)**
-
-If ``true``, updates animations in response to process-related notifications.
+\ **Note:** This obeys the same logic as the :ref:`AnimationMixer.animation_finished<class_AnimationMixer_signal_animation_finished>` signal, so it will not quit the engine if the animation is set to be looping.
 
 
 .. rst-class:: classref-item-separator
 .. rst-class:: classref-item-separator
 
 
@@ -471,59 +340,6 @@ The default time in which to blend animations. Ranges from 0 to 4096 with 0.01 p
 
 
 ----
 ----
 
 
-.. _class_AnimationPlayer_property_playback_process_mode:
-
-.. rst-class:: classref-property
-
-:ref:`AnimationProcessCallback<enum_AnimationPlayer_AnimationProcessCallback>` **playback_process_mode** = ``1``
-
-.. rst-class:: classref-property-setget
-
-- void **set_process_callback** **(** :ref:`AnimationProcessCallback<enum_AnimationPlayer_AnimationProcessCallback>` value **)**
-- :ref:`AnimationProcessCallback<enum_AnimationPlayer_AnimationProcessCallback>` **get_process_callback** **(** **)**
-
-The process notification in which to update animations.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_AnimationPlayer_property_reset_on_save:
-
-.. rst-class:: classref-property
-
-:ref:`bool<class_bool>` **reset_on_save** = ``true``
-
-.. rst-class:: classref-property-setget
-
-- void **set_reset_on_save_enabled** **(** :ref:`bool<class_bool>` value **)**
-- :ref:`bool<class_bool>` **is_reset_on_save_enabled** **(** **)**
-
-This is used by the editor. If set to ``true``, the scene will be saved with the effects of the reset animation (the animation with the key ``"RESET"``) applied as if it had been seeked to time 0, with the editor keeping the values that the scene had before saving.
-
-This makes it more convenient to preview and edit animations in the editor, as changes to the scene will not be saved as long as they are set in the reset animation.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_AnimationPlayer_property_root_node:
-
-.. rst-class:: classref-property
-
-:ref:`NodePath<class_NodePath>` **root_node** = ``NodePath("..")``
-
-.. rst-class:: classref-property-setget
-
-- void **set_root** **(** :ref:`NodePath<class_NodePath>` value **)**
-- :ref:`NodePath<class_NodePath>` **get_root** **(** **)**
-
-The node from which node path references will travel.
-
-.. rst-class:: classref-item-separator
-
-----
-
 .. _class_AnimationPlayer_property_speed_scale:
 .. _class_AnimationPlayer_property_speed_scale:
 
 
 .. rst-class:: classref-property
 .. rst-class:: classref-property
@@ -548,49 +364,13 @@ If set to a negative value, the animation is played in reverse. If set to ``0``,
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
 
 
-.. _class_AnimationPlayer_method__post_process_key_value:
-
-.. rst-class:: classref-method
-
-:ref:`Variant<class_Variant>` **_post_process_key_value** **(** :ref:`Animation<class_Animation>` animation, :ref:`int<class_int>` track, :ref:`Variant<class_Variant>` value, :ref:`Object<class_Object>` object, :ref:`int<class_int>` object_idx **)** |virtual| |const|
-
-A virtual function for processing after key getting during playback.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_AnimationPlayer_method_add_animation_library:
-
-.. rst-class:: classref-method
-
-:ref:`Error<enum_@GlobalScope_Error>` **add_animation_library** **(** :ref:`StringName<class_StringName>` name, :ref:`AnimationLibrary<class_AnimationLibrary>` library **)**
-
-Adds ``library`` to the animation player, under the key ``name``.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_AnimationPlayer_method_advance:
-
-.. rst-class:: classref-method
-
-void **advance** **(** :ref:`float<class_float>` delta **)**
-
-Shifts position in the animation timeline and immediately updates the animation. ``delta`` is the time in seconds to shift. Events between the current frame and ``delta`` are handled.
-
-.. rst-class:: classref-item-separator
-
-----
-
 .. _class_AnimationPlayer_method_animation_get_next:
 .. _class_AnimationPlayer_method_animation_get_next:
 
 
 .. rst-class:: classref-method
 .. rst-class:: classref-method
 
 
-:ref:`StringName<class_StringName>` **animation_get_next** **(** :ref:`StringName<class_StringName>` anim_from **)** |const|
+:ref:`StringName<class_StringName>` **animation_get_next** **(** :ref:`StringName<class_StringName>` animation_from **)** |const|
 
 
-Returns the key of the animation which is queued to play after the ``anim_from`` animation.
+Returns the key of the animation which is queued to play after the ``animation_from`` animation.
 
 
 .. rst-class:: classref-item-separator
 .. rst-class:: classref-item-separator
 
 
@@ -600,21 +380,9 @@ Returns the key of the animation which is queued to play after the ``anim_from``
 
 
 .. rst-class:: classref-method
 .. rst-class:: classref-method
 
 
-void **animation_set_next** **(** :ref:`StringName<class_StringName>` anim_from, :ref:`StringName<class_StringName>` anim_to **)**
+void **animation_set_next** **(** :ref:`StringName<class_StringName>` animation_from, :ref:`StringName<class_StringName>` animation_to **)**
 
 
-Triggers the ``anim_to`` animation when the ``anim_from`` animation completes.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_AnimationPlayer_method_clear_caches:
-
-.. rst-class:: classref-method
-
-void **clear_caches** **(** **)**
-
-**AnimationPlayer** caches animated nodes. It may not notice if a node disappears; :ref:`clear_caches<class_AnimationPlayer_method_clear_caches>` forces it to update the cache again.
+Triggers the ``animation_to`` animation when the ``animation_from`` animation completes.
 
 
 .. rst-class:: classref-item-separator
 .. rst-class:: classref-item-separator
 
 
@@ -632,87 +400,25 @@ Clears all queued, unplayed animations.
 
 
 ----
 ----
 
 
-.. _class_AnimationPlayer_method_find_animation:
-
-.. rst-class:: classref-method
-
-:ref:`StringName<class_StringName>` **find_animation** **(** :ref:`Animation<class_Animation>` animation **)** |const|
-
-Returns the key of ``animation`` or an empty :ref:`StringName<class_StringName>` if not found.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_AnimationPlayer_method_find_animation_library:
-
-.. rst-class:: classref-method
-
-:ref:`StringName<class_StringName>` **find_animation_library** **(** :ref:`Animation<class_Animation>` animation **)** |const|
-
-Returns the key for the :ref:`AnimationLibrary<class_AnimationLibrary>` that contains ``animation`` or an empty :ref:`StringName<class_StringName>` if not found.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_AnimationPlayer_method_get_animation:
-
-.. rst-class:: classref-method
-
-:ref:`Animation<class_Animation>` **get_animation** **(** :ref:`StringName<class_StringName>` name **)** |const|
-
-Returns the :ref:`Animation<class_Animation>` with the key ``name``. If the animation does not exist, ``null`` is returned and an error is logged.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_AnimationPlayer_method_get_animation_library:
-
-.. rst-class:: classref-method
-
-:ref:`AnimationLibrary<class_AnimationLibrary>` **get_animation_library** **(** :ref:`StringName<class_StringName>` name **)** |const|
-
-Returns the first :ref:`AnimationLibrary<class_AnimationLibrary>` with key ``name`` or ``null`` if not found.
-
-To get the **AnimationPlayer**'s global animation library, use ``get_animation_library("")``.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_AnimationPlayer_method_get_animation_library_list:
-
-.. rst-class:: classref-method
-
-:ref:`StringName[]<class_StringName>` **get_animation_library_list** **(** **)** |const|
-
-Returns the list of stored library keys.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_AnimationPlayer_method_get_animation_list:
+.. _class_AnimationPlayer_method_get_blend_time:
 
 
 .. rst-class:: classref-method
 .. rst-class:: classref-method
 
 
-:ref:`PackedStringArray<class_PackedStringArray>` **get_animation_list** **(** **)** |const|
+:ref:`float<class_float>` **get_blend_time** **(** :ref:`StringName<class_StringName>` animation_from, :ref:`StringName<class_StringName>` animation_to **)** |const|
 
 
-Returns the list of stored animation keys.
+Returns the blend time (in seconds) between two animations, referenced by their keys.
 
 
 .. rst-class:: classref-item-separator
 .. rst-class:: classref-item-separator
 
 
 ----
 ----
 
 
-.. _class_AnimationPlayer_method_get_blend_time:
+.. _class_AnimationPlayer_method_get_method_call_mode:
 
 
 .. rst-class:: classref-method
 .. rst-class:: classref-method
 
 
-:ref:`float<class_float>` **get_blend_time** **(** :ref:`StringName<class_StringName>` anim_from, :ref:`StringName<class_StringName>` anim_to **)** |const|
+:ref:`AnimationMethodCallMode<enum_AnimationPlayer_AnimationMethodCallMode>` **get_method_call_mode** **(** **)** |const|
 
 
-Returns the blend time (in seconds) between two animations, referenced by their keys.
+For backward compatibility. See :ref:`AnimationCallbackModeMethod<enum_AnimationMixer_AnimationCallbackModeMethod>`.
 
 
 .. rst-class:: classref-item-separator
 .. rst-class:: classref-item-separator
 
 
@@ -732,37 +438,37 @@ Returns a negative value if the current animation is playing backwards.
 
 
 ----
 ----
 
 
-.. _class_AnimationPlayer_method_get_queue:
+.. _class_AnimationPlayer_method_get_process_callback:
 
 
 .. rst-class:: classref-method
 .. rst-class:: classref-method
 
 
-:ref:`PackedStringArray<class_PackedStringArray>` **get_queue** **(** **)**
+:ref:`AnimationProcessCallback<enum_AnimationPlayer_AnimationProcessCallback>` **get_process_callback** **(** **)** |const|
 
 
-Returns a list of the animation keys that are currently queued to play.
+For backward compatibility. See :ref:`AnimationCallbackModeProcess<enum_AnimationMixer_AnimationCallbackModeProcess>`.
 
 
 .. rst-class:: classref-item-separator
 .. rst-class:: classref-item-separator
 
 
 ----
 ----
 
 
-.. _class_AnimationPlayer_method_has_animation:
+.. _class_AnimationPlayer_method_get_queue:
 
 
 .. rst-class:: classref-method
 .. rst-class:: classref-method
 
 
-:ref:`bool<class_bool>` **has_animation** **(** :ref:`StringName<class_StringName>` name **)** |const|
+:ref:`PackedStringArray<class_PackedStringArray>` **get_queue** **(** **)**
 
 
-Returns ``true`` if the **AnimationPlayer** stores an :ref:`Animation<class_Animation>` with key ``name``.
+Returns a list of the animation keys that are currently queued to play.
 
 
 .. rst-class:: classref-item-separator
 .. rst-class:: classref-item-separator
 
 
 ----
 ----
 
 
-.. _class_AnimationPlayer_method_has_animation_library:
+.. _class_AnimationPlayer_method_get_root:
 
 
 .. rst-class:: classref-method
 .. rst-class:: classref-method
 
 
-:ref:`bool<class_bool>` **has_animation_library** **(** :ref:`StringName<class_StringName>` name **)** |const|
+:ref:`NodePath<class_NodePath>` **get_root** **(** **)** |const|
 
 
-Returns ``true`` if the **AnimationPlayer** stores an :ref:`AnimationLibrary<class_AnimationLibrary>` with key ``name``.
+For backward compatibility. See :ref:`AnimationMixer.root_node<class_AnimationMixer_property_root_node>`.
 
 
 .. rst-class:: classref-item-separator
 .. rst-class:: classref-item-separator
 
 
@@ -840,51 +546,65 @@ Queues an animation for playback once the current one is done.
 
 
 ----
 ----
 
 
-.. _class_AnimationPlayer_method_remove_animation_library:
+.. _class_AnimationPlayer_method_seek:
 
 
 .. rst-class:: classref-method
 .. rst-class:: classref-method
 
 
-void **remove_animation_library** **(** :ref:`StringName<class_StringName>` name **)**
+void **seek** **(** :ref:`float<class_float>` seconds, :ref:`bool<class_bool>` update=false, :ref:`bool<class_bool>` update_only=false **)**
 
 
-Removes the :ref:`AnimationLibrary<class_AnimationLibrary>` associated with the key ``name``.
+Seeks the animation to the ``seconds`` point in time (in seconds). If ``update`` is ``true``, the animation updates too, otherwise it updates at process time. Events between the current frame and ``seconds`` are skipped.
+
+If ``update_only`` is true, the method / audio / animation playback tracks will not be processed.
+
+\ **Note:** Seeking to the end of the animation doesn't emit :ref:`AnimationMixer.animation_finished<class_AnimationMixer_signal_animation_finished>`. If you want to skip animation and emit the signal, use :ref:`AnimationMixer.advance<class_AnimationMixer_method_advance>`.
 
 
 .. rst-class:: classref-item-separator
 .. rst-class:: classref-item-separator
 
 
 ----
 ----
 
 
-.. _class_AnimationPlayer_method_rename_animation_library:
+.. _class_AnimationPlayer_method_set_blend_time:
 
 
 .. rst-class:: classref-method
 .. rst-class:: classref-method
 
 
-void **rename_animation_library** **(** :ref:`StringName<class_StringName>` name, :ref:`StringName<class_StringName>` newname **)**
+void **set_blend_time** **(** :ref:`StringName<class_StringName>` animation_from, :ref:`StringName<class_StringName>` animation_to, :ref:`float<class_float>` sec **)**
 
 
-Moves the :ref:`AnimationLibrary<class_AnimationLibrary>` associated with the key ``name`` to the key ``newname``.
+Specifies a blend time (in seconds) between two animations, referenced by their keys.
 
 
 .. rst-class:: classref-item-separator
 .. rst-class:: classref-item-separator
 
 
 ----
 ----
 
 
-.. _class_AnimationPlayer_method_seek:
+.. _class_AnimationPlayer_method_set_method_call_mode:
 
 
 .. rst-class:: classref-method
 .. rst-class:: classref-method
 
 
-void **seek** **(** :ref:`float<class_float>` seconds, :ref:`bool<class_bool>` update=false **)**
+void **set_method_call_mode** **(** :ref:`AnimationMethodCallMode<enum_AnimationPlayer_AnimationMethodCallMode>` mode **)**
 
 
-Seeks the animation to the ``seconds`` point in time (in seconds). If ``update`` is ``true``, the animation updates too, otherwise it updates at process time. Events between the current frame and ``seconds`` are skipped.
+For backward compatibility. See :ref:`AnimationCallbackModeMethod<enum_AnimationMixer_AnimationCallbackModeMethod>`.
+
+.. rst-class:: classref-item-separator
+
+----
 
 
-\ **Note:** Seeking to the end of the animation doesn't emit :ref:`animation_finished<class_AnimationPlayer_signal_animation_finished>`. If you want to skip animation and emit the signal, use :ref:`advance<class_AnimationPlayer_method_advance>`.
+.. _class_AnimationPlayer_method_set_process_callback:
+
+.. rst-class:: classref-method
+
+void **set_process_callback** **(** :ref:`AnimationProcessCallback<enum_AnimationPlayer_AnimationProcessCallback>` mode **)**
+
+For backward compatibility. See :ref:`AnimationCallbackModeProcess<enum_AnimationMixer_AnimationCallbackModeProcess>`.
 
 
 .. rst-class:: classref-item-separator
 .. rst-class:: classref-item-separator
 
 
 ----
 ----
 
 
-.. _class_AnimationPlayer_method_set_blend_time:
+.. _class_AnimationPlayer_method_set_root:
 
 
 .. rst-class:: classref-method
 .. rst-class:: classref-method
 
 
-void **set_blend_time** **(** :ref:`StringName<class_StringName>` anim_from, :ref:`StringName<class_StringName>` anim_to, :ref:`float<class_float>` sec **)**
+void **set_root** **(** :ref:`NodePath<class_NodePath>` path **)**
 
 
-Specifies a blend time (in seconds) between two animations, referenced by their keys.
+For backward compatibility. See :ref:`AnimationMixer.root_node<class_AnimationMixer_property_root_node>`.
 
 
 .. rst-class:: classref-item-separator
 .. rst-class:: classref-item-separator
 
 

+ 29 - 370
classes/class_animationtree.rst

@@ -10,7 +10,7 @@
 AnimationTree
 AnimationTree
 =============
 =============
 
 
-**Inherits:** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AnimationMixer<class_AnimationMixer>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
 
 A node used for advanced animation transitions in an :ref:`AnimationPlayer<class_AnimationPlayer>`.
 A node used for advanced animation transitions in an :ref:`AnimationPlayer<class_AnimationPlayer>`.
 
 
@@ -40,21 +40,15 @@ Properties
 .. table::
 .. table::
    :widths: auto
    :widths: auto
 
 
-   +------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+-------------------+
-   | :ref:`bool<class_bool>`                                                      | :ref:`active<class_AnimationTree_property_active>`                                             | ``false``         |
-   +------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+-------------------+
-   | :ref:`NodePath<class_NodePath>`                                              | :ref:`advance_expression_base_node<class_AnimationTree_property_advance_expression_base_node>` | ``NodePath(".")`` |
-   +------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+-------------------+
-   | :ref:`NodePath<class_NodePath>`                                              | :ref:`anim_player<class_AnimationTree_property_anim_player>`                                   | ``NodePath("")``  |
-   +------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+-------------------+
-   | :ref:`int<class_int>`                                                        | :ref:`audio_max_polyphony<class_AnimationTree_property_audio_max_polyphony>`                   | ``32``            |
-   +------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+-------------------+
-   | :ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>` | :ref:`process_callback<class_AnimationTree_property_process_callback>`                         | ``1``             |
-   +------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+-------------------+
-   | :ref:`NodePath<class_NodePath>`                                              | :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>`                       | ``NodePath("")``  |
-   +------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+-------------------+
-   | :ref:`AnimationNode<class_AnimationNode>`                                    | :ref:`tree_root<class_AnimationTree_property_tree_root>`                                       |                   |
-   +------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+-------------------+
+   +---------------------------------------------------+------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+
+   | :ref:`NodePath<class_NodePath>`                   | :ref:`advance_expression_base_node<class_AnimationTree_property_advance_expression_base_node>` | ``NodePath(".")``                                                                       |
+   +---------------------------------------------------+------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+
+   | :ref:`NodePath<class_NodePath>`                   | :ref:`anim_player<class_AnimationTree_property_anim_player>`                                   | ``NodePath("")``                                                                        |
+   +---------------------------------------------------+------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                           | deterministic                                                                                  | ``true`` (overrides :ref:`AnimationMixer<class_AnimationMixer_property_deterministic>`) |
+   +---------------------------------------------------+------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+
+   | :ref:`AnimationRootNode<class_AnimationRootNode>` | :ref:`tree_root<class_AnimationTree_property_tree_root>`                                       |                                                                                         |
+   +---------------------------------------------------+------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+
 
 
 .. rst-class:: classref-reftable-group
 .. rst-class:: classref-reftable-group
 
 
@@ -64,23 +58,11 @@ Methods
 .. table::
 .. table::
    :widths: auto
    :widths: auto
 
 
-   +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`Variant<class_Variant>`       | :ref:`_post_process_key_value<class_AnimationTree_method__post_process_key_value>` **(** :ref:`Animation<class_Animation>` animation, :ref:`int<class_int>` track, :ref:`Variant<class_Variant>` value, :ref:`Object<class_Object>` object, :ref:`int<class_int>` object_idx **)** |virtual| |const| |
-   +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | void                                | :ref:`advance<class_AnimationTree_method_advance>` **(** :ref:`float<class_float>` delta **)**                                                                                                                                                                                                       |
-   +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`Vector3<class_Vector3>`       | :ref:`get_root_motion_position<class_AnimationTree_method_get_root_motion_position>` **(** **)** |const|                                                                                                                                                                                             |
-   +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`Vector3<class_Vector3>`       | :ref:`get_root_motion_position_accumulator<class_AnimationTree_method_get_root_motion_position_accumulator>` **(** **)** |const|                                                                                                                                                                     |
-   +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`Quaternion<class_Quaternion>` | :ref:`get_root_motion_rotation<class_AnimationTree_method_get_root_motion_rotation>` **(** **)** |const|                                                                                                                                                                                             |
-   +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`Quaternion<class_Quaternion>` | :ref:`get_root_motion_rotation_accumulator<class_AnimationTree_method_get_root_motion_rotation_accumulator>` **(** **)** |const|                                                                                                                                                                     |
-   +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`Vector3<class_Vector3>`       | :ref:`get_root_motion_scale<class_AnimationTree_method_get_root_motion_scale>` **(** **)** |const|                                                                                                                                                                                                   |
-   +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`Vector3<class_Vector3>`       | :ref:`get_root_motion_scale_accumulator<class_AnimationTree_method_get_root_motion_scale_accumulator>` **(** **)** |const|                                                                                                                                                                           |
-   +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   +------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>` | :ref:`get_process_callback<class_AnimationTree_method_get_process_callback>` **(** **)** |const|                                                                           |
+   +------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | void                                                                         | :ref:`set_process_callback<class_AnimationTree_method_set_process_callback>` **(** :ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>` mode **)** |
+   +------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 
 .. rst-class:: classref-section-separator
 .. rst-class:: classref-section-separator
 
 
@@ -91,20 +73,6 @@ Methods
 Signals
 Signals
 -------
 -------
 
 
-.. _class_AnimationTree_signal_animation_finished:
-
-.. rst-class:: classref-signal
-
-**animation_finished** **(** :ref:`StringName<class_StringName>` anim_name **)**
-
-Notifies when an animation finished playing.
-
-\ **Note:** This signal is not emitted if an animation is looping or aborted. Also be aware of the possibility of unseen playback by sync and xfade.
-
-.. rst-class:: classref-item-separator
-
-----
-
 .. _class_AnimationTree_signal_animation_player_changed:
 .. _class_AnimationTree_signal_animation_player_changed:
 
 
 .. rst-class:: classref-signal
 .. rst-class:: classref-signal
@@ -113,20 +81,6 @@ Notifies when an animation finished playing.
 
 
 Emitted when the :ref:`anim_player<class_AnimationTree_property_anim_player>` is changed.
 Emitted when the :ref:`anim_player<class_AnimationTree_property_anim_player>` is changed.
 
 
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_AnimationTree_signal_animation_started:
-
-.. rst-class:: classref-signal
-
-**animation_started** **(** :ref:`StringName<class_StringName>` anim_name **)**
-
-Notifies when an animation starts playing.
-
-\ **Note:** This signal is not emitted if an animation is looping or playbacked from the middle. Also be aware of the possibility of unseen playback by sync and xfade.
-
 .. rst-class:: classref-section-separator
 .. rst-class:: classref-section-separator
 
 
 ----
 ----
@@ -148,7 +102,7 @@ enum **AnimationProcessCallback**:
 
 
 :ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>` **ANIMATION_PROCESS_PHYSICS** = ``0``
 :ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>` **ANIMATION_PROCESS_PHYSICS** = ``0``
 
 
-The animations will progress during physics frames (see :ref:`Node.NOTIFICATION_INTERNAL_PHYSICS_PROCESS<class_Node_constant_NOTIFICATION_INTERNAL_PHYSICS_PROCESS>`).
+For backward compatibility. See :ref:`AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_PHYSICS<class_AnimationMixer_constant_ANIMATION_CALLBACK_MODE_PROCESS_PHYSICS>`.
 
 
 .. _class_AnimationTree_constant_ANIMATION_PROCESS_IDLE:
 .. _class_AnimationTree_constant_ANIMATION_PROCESS_IDLE:
 
 
@@ -156,7 +110,7 @@ The animations will progress during physics frames (see :ref:`Node.NOTIFICATION_
 
 
 :ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>` **ANIMATION_PROCESS_IDLE** = ``1``
 :ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>` **ANIMATION_PROCESS_IDLE** = ``1``
 
 
-The animations will progress during process frames (see :ref:`Node.NOTIFICATION_INTERNAL_PROCESS<class_Node_constant_NOTIFICATION_INTERNAL_PROCESS>`).
+For backward compatibility. See :ref:`AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_IDLE<class_AnimationMixer_constant_ANIMATION_CALLBACK_MODE_PROCESS_IDLE>`.
 
 
 .. _class_AnimationTree_constant_ANIMATION_PROCESS_MANUAL:
 .. _class_AnimationTree_constant_ANIMATION_PROCESS_MANUAL:
 
 
@@ -164,7 +118,7 @@ The animations will progress during process frames (see :ref:`Node.NOTIFICATION_
 
 
 :ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>` **ANIMATION_PROCESS_MANUAL** = ``2``
 :ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>` **ANIMATION_PROCESS_MANUAL** = ``2``
 
 
-The animations will only progress manually (see :ref:`advance<class_AnimationTree_method_advance>`).
+For backward compatibility. See :ref:`AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_MANUAL<class_AnimationMixer_constant_ANIMATION_CALLBACK_MODE_PROCESS_MANUAL>`.
 
 
 .. rst-class:: classref-section-separator
 .. rst-class:: classref-section-separator
 
 
@@ -175,23 +129,6 @@ The animations will only progress manually (see :ref:`advance<class_AnimationTre
 Property Descriptions
 Property Descriptions
 ---------------------
 ---------------------
 
 
-.. _class_AnimationTree_property_active:
-
-.. rst-class:: classref-property
-
-:ref:`bool<class_bool>` **active** = ``false``
-
-.. rst-class:: classref-property-setget
-
-- void **set_active** **(** :ref:`bool<class_bool>` value **)**
-- :ref:`bool<class_bool>` **is_active** **(** **)**
-
-If ``true``, the **AnimationTree** will be processing.
-
-.. rst-class:: classref-item-separator
-
-----
-
 .. _class_AnimationTree_property_advance_expression_base_node:
 .. _class_AnimationTree_property_advance_expression_base_node:
 
 
 .. rst-class:: classref-property
 .. rst-class:: classref-property
@@ -203,7 +140,7 @@ If ``true``, the **AnimationTree** will be processing.
 - void **set_advance_expression_base_node** **(** :ref:`NodePath<class_NodePath>` value **)**
 - void **set_advance_expression_base_node** **(** :ref:`NodePath<class_NodePath>` value **)**
 - :ref:`NodePath<class_NodePath>` **get_advance_expression_base_node** **(** **)**
 - :ref:`NodePath<class_NodePath>` **get_advance_expression_base_node** **(** **)**
 
 
-The path to the :ref:`Node<class_Node>` used to evaluate the AnimationNode :ref:`Expression<class_Expression>` if one is not explicitly specified internally.
+The path to the :ref:`Node<class_Node>` used to evaluate the :ref:`AnimationNode<class_AnimationNode>` :ref:`Expression<class_Expression>` if one is not explicitly specified internally.
 
 
 .. rst-class:: classref-item-separator
 .. rst-class:: classref-item-separator
 
 
@@ -226,73 +163,18 @@ The path to the :ref:`AnimationPlayer<class_AnimationPlayer>` used for animating
 
 
 ----
 ----
 
 
-.. _class_AnimationTree_property_audio_max_polyphony:
-
-.. rst-class:: classref-property
-
-:ref:`int<class_int>` **audio_max_polyphony** = ``32``
-
-.. rst-class:: classref-property-setget
-
-- void **set_audio_max_polyphony** **(** :ref:`int<class_int>` value **)**
-- :ref:`int<class_int>` **get_audio_max_polyphony** **(** **)**
-
-The number of possible simultaneous sounds for each of the assigned AudioStreamPlayers.
-
-For example, if this value is ``32`` and the animation has two audio tracks, the two :ref:`AudioStreamPlayer<class_AudioStreamPlayer>`\ s assigned can play simultaneously up to ``32`` voices each.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_AnimationTree_property_process_callback:
-
-.. rst-class:: classref-property
-
-:ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>` **process_callback** = ``1``
-
-.. rst-class:: classref-property-setget
-
-- void **set_process_callback** **(** :ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>` value **)**
-- :ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>` **get_process_callback** **(** **)**
-
-The process mode of this **AnimationTree**. See :ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>` for available modes.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_AnimationTree_property_root_motion_track:
-
-.. rst-class:: classref-property
-
-:ref:`NodePath<class_NodePath>` **root_motion_track** = ``NodePath("")``
-
-.. rst-class:: classref-property-setget
-
-- void **set_root_motion_track** **(** :ref:`NodePath<class_NodePath>` value **)**
-- :ref:`NodePath<class_NodePath>` **get_root_motion_track** **(** **)**
-
-The path to the Animation track used for root motion. Paths must be valid scene-tree paths to a node, and must be specified starting from the parent node of the node that will reproduce the animation. To specify a track that controls properties or bones, append its name after the path, separated by ``":"``. For example, ``"character/skeleton:ankle"`` or ``"character/mesh:transform/local"``.
-
-If the track has type :ref:`Animation.TYPE_POSITION_3D<class_Animation_constant_TYPE_POSITION_3D>`, :ref:`Animation.TYPE_ROTATION_3D<class_Animation_constant_TYPE_ROTATION_3D>` or :ref:`Animation.TYPE_SCALE_3D<class_Animation_constant_TYPE_SCALE_3D>` the transformation will be canceled visually, and the animation will appear to stay in place. See also :ref:`get_root_motion_position<class_AnimationTree_method_get_root_motion_position>`, :ref:`get_root_motion_rotation<class_AnimationTree_method_get_root_motion_rotation>`, :ref:`get_root_motion_scale<class_AnimationTree_method_get_root_motion_scale>` and :ref:`RootMotionView<class_RootMotionView>`.
-
-.. rst-class:: classref-item-separator
-
-----
-
 .. _class_AnimationTree_property_tree_root:
 .. _class_AnimationTree_property_tree_root:
 
 
 .. rst-class:: classref-property
 .. rst-class:: classref-property
 
 
-:ref:`AnimationNode<class_AnimationNode>` **tree_root**
+:ref:`AnimationRootNode<class_AnimationRootNode>` **tree_root**
 
 
 .. rst-class:: classref-property-setget
 .. rst-class:: classref-property-setget
 
 
-- void **set_tree_root** **(** :ref:`AnimationNode<class_AnimationNode>` value **)**
-- :ref:`AnimationNode<class_AnimationNode>` **get_tree_root** **(** **)**
+- void **set_tree_root** **(** :ref:`AnimationRootNode<class_AnimationRootNode>` value **)**
+- :ref:`AnimationRootNode<class_AnimationRootNode>` **get_tree_root** **(** **)**
 
 
-The root animation node of this **AnimationTree**. See :ref:`AnimationNode<class_AnimationNode>`.
+The root animation node of this **AnimationTree**. See :ref:`AnimationRootNode<class_AnimationRootNode>`.
 
 
 .. rst-class:: classref-section-separator
 .. rst-class:: classref-section-separator
 
 
@@ -303,248 +185,25 @@ The root animation node of this **AnimationTree**. See :ref:`AnimationNode<class
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
 
 
-.. _class_AnimationTree_method__post_process_key_value:
+.. _class_AnimationTree_method_get_process_callback:
 
 
 .. rst-class:: classref-method
 .. rst-class:: classref-method
 
 
-:ref:`Variant<class_Variant>` **_post_process_key_value** **(** :ref:`Animation<class_Animation>` animation, :ref:`int<class_int>` track, :ref:`Variant<class_Variant>` value, :ref:`Object<class_Object>` object, :ref:`int<class_int>` object_idx **)** |virtual| |const|
+:ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>` **get_process_callback** **(** **)** |const|
 
 
-A virtual function for processing after key getting during playback.
+For backward compatibility. See :ref:`AnimationCallbackModeProcess<enum_AnimationMixer_AnimationCallbackModeProcess>`.
 
 
 .. rst-class:: classref-item-separator
 .. rst-class:: classref-item-separator
 
 
 ----
 ----
 
 
-.. _class_AnimationTree_method_advance:
+.. _class_AnimationTree_method_set_process_callback:
 
 
 .. rst-class:: classref-method
 .. rst-class:: classref-method
 
 
-void **advance** **(** :ref:`float<class_float>` delta **)**
-
-Manually advance the animations by the specified time (in seconds).
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_AnimationTree_method_get_root_motion_position:
-
-.. rst-class:: classref-method
-
-:ref:`Vector3<class_Vector3>` **get_root_motion_position** **(** **)** |const|
-
-Retrieve the motion delta of position with the :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>` as a :ref:`Vector3<class_Vector3>` that can be used elsewhere.
-
-If :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>` is not a path to a track of type :ref:`Animation.TYPE_POSITION_3D<class_Animation_constant_TYPE_POSITION_3D>`, returns ``Vector3(0, 0, 0)``.
-
-See also :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>` and :ref:`RootMotionView<class_RootMotionView>`.
-
-The most basic example is applying position to :ref:`CharacterBody3D<class_CharacterBody3D>`:
-
-
-.. tabs::
-
- .. code-tab:: gdscript
-
-    var current_rotation: Quaternion
-    
-    func _process(delta):
-        if Input.is_action_just_pressed("animate"):
-            current_rotation = get_quaternion()
-            state_machine.travel("Animate")
-        var velocity: Vector3 = current_rotation * animation_tree.get_root_motion_position() / delta
-        set_velocity(velocity)
-        move_and_slide()
-
-
-
-By using this in combination with :ref:`get_root_motion_position_accumulator<class_AnimationTree_method_get_root_motion_position_accumulator>`, you can apply the root motion position more correctly to account for the rotation of the node.
-
-
-.. tabs::
-
- .. code-tab:: gdscript
-
-    func _process(delta):
-        if Input.is_action_just_pressed("animate"):
-            state_machine.travel("Animate")
-        set_quaternion(get_quaternion() * animation_tree.get_root_motion_rotation())
-        var velocity: Vector3 = (animation_tree.get_root_motion_rotation_accumulator().inverse() * get_quaternion()) * animation_tree.get_root_motion_position() / delta
-        set_velocity(velocity)
-        move_and_slide()
-
-
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_AnimationTree_method_get_root_motion_position_accumulator:
-
-.. rst-class:: classref-method
-
-:ref:`Vector3<class_Vector3>` **get_root_motion_position_accumulator** **(** **)** |const|
-
-Retrieve the blended value of the position tracks with the :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>` as a :ref:`Vector3<class_Vector3>` that can be used elsewhere.
-
-This is useful in cases where you want to respect the initial key values of the animation.
-
-For example, if an animation with only one key ``Vector3(0, 0, 0)`` is played in the previous frame and then an animation with only one key ``Vector3(1, 0, 1)`` is played in the next frame, the difference can be calculated as follows:
-
-
-.. tabs::
-
- .. code-tab:: gdscript
-
-    var prev_root_motion_position_accumulator: Vector3
-    
-    func _process(delta):
-        if Input.is_action_just_pressed("animate"):
-            state_machine.travel("Animate")
-        var current_root_motion_position_accumulator: Vector3 = animation_tree.get_root_motion_position_accumulator()
-        var difference: Vector3 = current_root_motion_position_accumulator - prev_root_motion_position_accumulator
-        prev_root_motion_position_accumulator = current_root_motion_position_accumulator
-        transform.origin += difference
-
-
-
-However, if the animation loops, an unintended discrete change may occur, so this is only useful for some simple use cases.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_AnimationTree_method_get_root_motion_rotation:
-
-.. rst-class:: classref-method
-
-:ref:`Quaternion<class_Quaternion>` **get_root_motion_rotation** **(** **)** |const|
-
-Retrieve the motion delta of rotation with the :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>` as a :ref:`Quaternion<class_Quaternion>` that can be used elsewhere.
-
-If :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>` is not a path to a track of type :ref:`Animation.TYPE_ROTATION_3D<class_Animation_constant_TYPE_ROTATION_3D>`, returns ``Quaternion(0, 0, 0, 1)``.
-
-See also :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>` and :ref:`RootMotionView<class_RootMotionView>`.
-
-The most basic example is applying rotation to :ref:`CharacterBody3D<class_CharacterBody3D>`:
-
-
-.. tabs::
-
- .. code-tab:: gdscript
-
-    func _process(delta):
-        if Input.is_action_just_pressed("animate"):
-            state_machine.travel("Animate")
-        set_quaternion(get_quaternion() * animation_tree.get_root_motion_rotation())
-
-
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_AnimationTree_method_get_root_motion_rotation_accumulator:
-
-.. rst-class:: classref-method
-
-:ref:`Quaternion<class_Quaternion>` **get_root_motion_rotation_accumulator** **(** **)** |const|
-
-Retrieve the blended value of the rotation tracks with the :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>` as a :ref:`Quaternion<class_Quaternion>` that can be used elsewhere.
-
-This is necessary to apply the root motion position correctly, taking rotation into account. See also :ref:`get_root_motion_position<class_AnimationTree_method_get_root_motion_position>`.
-
-Also, this is useful in cases where you want to respect the initial key values of the animation.
-
-For example, if an animation with only one key ``Quaternion(0, 0, 0, 1)`` is played in the previous frame and then an animation with only one key ``Quaternion(0, 0.707, 0, 0.707)`` is played in the next frame, the difference can be calculated as follows:
-
-
-.. tabs::
-
- .. code-tab:: gdscript
-
-    var prev_root_motion_rotation_accumulator: Quaternion
-    
-    func _process(delta):
-        if Input.is_action_just_pressed("animate"):
-            state_machine.travel("Animate")
-        var current_root_motion_rotation_accumulator: Quaternion = animation_tree.get_root_motion_Quaternion_accumulator()
-        var difference: Quaternion = prev_root_motion_rotation_accumulator.inverse() * current_root_motion_rotation_accumulator
-        prev_root_motion_rotation_accumulator = current_root_motion_rotation_accumulator
-        transform.basis *= difference
-
-
-
-However, if the animation loops, an unintended discrete change may occur, so this is only useful for some simple use cases.
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_AnimationTree_method_get_root_motion_scale:
-
-.. rst-class:: classref-method
-
-:ref:`Vector3<class_Vector3>` **get_root_motion_scale** **(** **)** |const|
-
-Retrieve the motion delta of scale with the :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>` as a :ref:`Vector3<class_Vector3>` that can be used elsewhere.
-
-If :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>` is not a path to a track of type :ref:`Animation.TYPE_SCALE_3D<class_Animation_constant_TYPE_SCALE_3D>`, returns ``Vector3(0, 0, 0)``.
-
-See also :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>` and :ref:`RootMotionView<class_RootMotionView>`.
-
-The most basic example is applying scale to :ref:`CharacterBody3D<class_CharacterBody3D>`:
-
-
-.. tabs::
-
- .. code-tab:: gdscript
-
-    var current_scale: Vector3 = Vector3(1, 1, 1)
-    var scale_accum: Vector3 = Vector3(1, 1, 1)
-    
-    func _process(delta):
-        if Input.is_action_just_pressed("animate"):
-            current_scale = get_scale()
-            scale_accum = Vector3(1, 1, 1)
-            state_machine.travel("Animate")
-        scale_accum += animation_tree.get_root_motion_scale()
-        set_scale(current_scale * scale_accum)
-
-
-
-.. rst-class:: classref-item-separator
-
-----
-
-.. _class_AnimationTree_method_get_root_motion_scale_accumulator:
-
-.. rst-class:: classref-method
-
-:ref:`Vector3<class_Vector3>` **get_root_motion_scale_accumulator** **(** **)** |const|
-
-Retrieve the blended value of the scale tracks with the :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>` as a :ref:`Vector3<class_Vector3>` that can be used elsewhere.
-
-For example, if an animation with only one key ``Vector3(1, 1, 1)`` is played in the previous frame and then an animation with only one key ``Vector3(2, 2, 2)`` is played in the next frame, the difference can be calculated as follows:
-
-
-.. tabs::
-
- .. code-tab:: gdscript
-
-    var prev_root_motion_scale_accumulator: Vector3
-    
-    func _process(delta):
-        if Input.is_action_just_pressed("animate"):
-            state_machine.travel("Animate")
-        var current_root_motion_scale_accumulator: Vector3 = animation_tree.get_root_motion_scale_accumulator()
-        var difference: Vector3 = current_root_motion_scale_accumulator - prev_root_motion_scale_accumulator
-        prev_root_motion_scale_accumulator = current_root_motion_scale_accumulator
-        transform.basis = transform.basis.scaled(difference)
-
-
+void **set_process_callback** **(** :ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>` mode **)**
 
 
-However, if the animation loops, an unintended discrete change may occur, so this is only useful for some simple use cases.
+For backward compatibility. See :ref:`AnimationCallbackModeProcess<enum_AnimationMixer_AnimationCallbackModeProcess>`.
 
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 7 - 7
classes/class_configfile.rst

@@ -291,7 +291,7 @@ Returns ``true`` if the specified section-key pair exists.
 
 
 Loads the config file specified as a parameter. The file's contents are parsed and loaded in the **ConfigFile** object which the method was called on.
 Loads the config file specified as a parameter. The file's contents are parsed and loaded in the **ConfigFile** object which the method was called on.
 
 
-Returns one of the :ref:`Error<enum_@GlobalScope_Error>` code constants (:ref:`@GlobalScope.OK<class_@GlobalScope_constant_OK>` on success).
+Returns :ref:`@GlobalScope.OK<class_@GlobalScope_constant_OK>` on success, or one of the other :ref:`Error<enum_@GlobalScope_Error>` values if the operation failed.
 
 
 .. rst-class:: classref-item-separator
 .. rst-class:: classref-item-separator
 
 
@@ -305,7 +305,7 @@ Returns one of the :ref:`Error<enum_@GlobalScope_Error>` code constants (:ref:`@
 
 
 Loads the encrypted config file specified as a parameter, using the provided ``key`` to decrypt it. The file's contents are parsed and loaded in the **ConfigFile** object which the method was called on.
 Loads the encrypted config file specified as a parameter, using the provided ``key`` to decrypt it. The file's contents are parsed and loaded in the **ConfigFile** object which the method was called on.
 
 
-Returns one of the :ref:`Error<enum_@GlobalScope_Error>` code constants (:ref:`@GlobalScope.OK<class_@GlobalScope_constant_OK>` on success).
+Returns :ref:`@GlobalScope.OK<class_@GlobalScope_constant_OK>` on success, or one of the other :ref:`Error<enum_@GlobalScope_Error>` values if the operation failed.
 
 
 .. rst-class:: classref-item-separator
 .. rst-class:: classref-item-separator
 
 
@@ -319,7 +319,7 @@ Returns one of the :ref:`Error<enum_@GlobalScope_Error>` code constants (:ref:`@
 
 
 Loads the encrypted config file specified as a parameter, using the provided ``password`` to decrypt it. The file's contents are parsed and loaded in the **ConfigFile** object which the method was called on.
 Loads the encrypted config file specified as a parameter, using the provided ``password`` to decrypt it. The file's contents are parsed and loaded in the **ConfigFile** object which the method was called on.
 
 
-Returns one of the :ref:`Error<enum_@GlobalScope_Error>` code constants (:ref:`@GlobalScope.OK<class_@GlobalScope_constant_OK>` on success).
+Returns :ref:`@GlobalScope.OK<class_@GlobalScope_constant_OK>` on success, or one of the other :ref:`Error<enum_@GlobalScope_Error>` values if the operation failed.
 
 
 .. rst-class:: classref-item-separator
 .. rst-class:: classref-item-separator
 
 
@@ -333,7 +333,7 @@ Returns one of the :ref:`Error<enum_@GlobalScope_Error>` code constants (:ref:`@
 
 
 Parses the passed string as the contents of a config file. The string is parsed and loaded in the ConfigFile object which the method was called on.
 Parses the passed string as the contents of a config file. The string is parsed and loaded in the ConfigFile object which the method was called on.
 
 
-Returns one of the :ref:`Error<enum_@GlobalScope_Error>` code constants (:ref:`@GlobalScope.OK<class_@GlobalScope_constant_OK>` on success).
+Returns :ref:`@GlobalScope.OK<class_@GlobalScope_constant_OK>` on success, or one of the other :ref:`Error<enum_@GlobalScope_Error>` values if the operation failed.
 
 
 .. rst-class:: classref-item-separator
 .. rst-class:: classref-item-separator
 
 
@@ -347,7 +347,7 @@ Returns one of the :ref:`Error<enum_@GlobalScope_Error>` code constants (:ref:`@
 
 
 Saves the contents of the **ConfigFile** object to the file specified as a parameter. The output file uses an INI-style structure.
 Saves the contents of the **ConfigFile** object to the file specified as a parameter. The output file uses an INI-style structure.
 
 
-Returns one of the :ref:`Error<enum_@GlobalScope_Error>` code constants (:ref:`@GlobalScope.OK<class_@GlobalScope_constant_OK>` on success).
+Returns :ref:`@GlobalScope.OK<class_@GlobalScope_constant_OK>` on success, or one of the other :ref:`Error<enum_@GlobalScope_Error>` values if the operation failed.
 
 
 .. rst-class:: classref-item-separator
 .. rst-class:: classref-item-separator
 
 
@@ -361,7 +361,7 @@ Returns one of the :ref:`Error<enum_@GlobalScope_Error>` code constants (:ref:`@
 
 
 Saves the contents of the **ConfigFile** object to the AES-256 encrypted file specified as a parameter, using the provided ``key`` to encrypt it. The output file uses an INI-style structure.
 Saves the contents of the **ConfigFile** object to the AES-256 encrypted file specified as a parameter, using the provided ``key`` to encrypt it. The output file uses an INI-style structure.
 
 
-Returns one of the :ref:`Error<enum_@GlobalScope_Error>` code constants (:ref:`@GlobalScope.OK<class_@GlobalScope_constant_OK>` on success).
+Returns :ref:`@GlobalScope.OK<class_@GlobalScope_constant_OK>` on success, or one of the other :ref:`Error<enum_@GlobalScope_Error>` values if the operation failed.
 
 
 .. rst-class:: classref-item-separator
 .. rst-class:: classref-item-separator
 
 
@@ -375,7 +375,7 @@ Returns one of the :ref:`Error<enum_@GlobalScope_Error>` code constants (:ref:`@
 
 
 Saves the contents of the **ConfigFile** object to the AES-256 encrypted file specified as a parameter, using the provided ``password`` to encrypt it. The output file uses an INI-style structure.
 Saves the contents of the **ConfigFile** object to the AES-256 encrypted file specified as a parameter, using the provided ``password`` to encrypt it. The output file uses an INI-style structure.
 
 
-Returns one of the :ref:`Error<enum_@GlobalScope_Error>` code constants (:ref:`@GlobalScope.OK<class_@GlobalScope_constant_OK>` on success).
+Returns :ref:`@GlobalScope.OK<class_@GlobalScope_constant_OK>` on success, or one of the other :ref:`Error<enum_@GlobalScope_Error>` values if the operation failed.
 
 
 .. rst-class:: classref-item-separator
 .. rst-class:: classref-item-separator
 
 

+ 6 - 2
classes/class_mesh.rst

@@ -912,7 +912,7 @@ Returns all the vertices that make up the faces of the mesh. Each three vertices
 
 
 :ref:`int<class_int>` **get_surface_count** **(** **)** |const|
 :ref:`int<class_int>` **get_surface_count** **(** **)** |const|
 
 
-Returns the number of surfaces that the **Mesh** holds.
+Returns the number of surfaces that the **Mesh** holds. This is equivalent to :ref:`MeshInstance3D.get_surface_override_material_count<class_MeshInstance3D_method_get_surface_override_material_count>`.
 
 
 .. rst-class:: classref-item-separator
 .. rst-class:: classref-item-separator
 
 
@@ -924,7 +924,7 @@ Returns the number of surfaces that the **Mesh** holds.
 
 
 :ref:`Array<class_Array>` **surface_get_arrays** **(** :ref:`int<class_int>` surf_idx **)** |const|
 :ref:`Array<class_Array>` **surface_get_arrays** **(** :ref:`int<class_int>` surf_idx **)** |const|
 
 
-Returns the arrays for the vertices, normals, uvs, etc. that make up the requested surface (see :ref:`ArrayMesh.add_surface_from_arrays<class_ArrayMesh_method_add_surface_from_arrays>`).
+Returns the arrays for the vertices, normals, UVs, etc. that make up the requested surface (see :ref:`ArrayMesh.add_surface_from_arrays<class_ArrayMesh_method_add_surface_from_arrays>`).
 
 
 .. rst-class:: classref-item-separator
 .. rst-class:: classref-item-separator
 
 
@@ -950,6 +950,8 @@ Returns the blend shape arrays for the requested surface.
 
 
 Returns a :ref:`Material<class_Material>` in a given surface. Surface is rendered using this material.
 Returns a :ref:`Material<class_Material>` in a given surface. Surface is rendered using this material.
 
 
+\ **Note:** This returns the material within the **Mesh** resource, not the :ref:`Material<class_Material>` associated to the :ref:`MeshInstance3D<class_MeshInstance3D>`'s Surface Material Override properties. To get the :ref:`Material<class_Material>` associated to the :ref:`MeshInstance3D<class_MeshInstance3D>`'s Surface Material Override properties, use :ref:`MeshInstance3D.get_surface_override_material<class_MeshInstance3D_method_get_surface_override_material>` instead.
+
 .. rst-class:: classref-item-separator
 .. rst-class:: classref-item-separator
 
 
 ----
 ----
@@ -962,6 +964,8 @@ void **surface_set_material** **(** :ref:`int<class_int>` surf_idx, :ref:`Materi
 
 
 Sets a :ref:`Material<class_Material>` for a given surface. Surface will be rendered using this material.
 Sets a :ref:`Material<class_Material>` for a given surface. Surface will be rendered using this material.
 
 
+\ **Note:** This assigns the material within the **Mesh** resource, not the :ref:`Material<class_Material>` associated to the :ref:`MeshInstance3D<class_MeshInstance3D>`'s Surface Material Override properties. To set the :ref:`Material<class_Material>` associated to the :ref:`MeshInstance3D<class_MeshInstance3D>`'s Surface Material Override properties, use :ref:`MeshInstance3D.set_surface_override_material<class_MeshInstance3D_method_set_surface_override_material>` instead.
+
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`

+ 6 - 2
classes/class_meshinstance3d.rst

@@ -259,7 +259,9 @@ Returns the value of the blend shape at the given ``blend_shape_idx``. Returns `
 
 
 :ref:`Material<class_Material>` **get_surface_override_material** **(** :ref:`int<class_int>` surface **)** |const|
 :ref:`Material<class_Material>` **get_surface_override_material** **(** :ref:`int<class_int>` surface **)** |const|
 
 
-Returns the override :ref:`Material<class_Material>` for the specified ``surface`` of the :ref:`Mesh<class_Mesh>` resource.
+Returns the override :ref:`Material<class_Material>` for the specified ``surface`` of the :ref:`Mesh<class_Mesh>` resource. See also :ref:`get_surface_override_material_count<class_MeshInstance3D_method_get_surface_override_material_count>`.
+
+\ **Note:** This returns the :ref:`Material<class_Material>` associated to the **MeshInstance3D**'s Surface Material Override properties, not the material within the :ref:`Mesh<class_Mesh>` resource. To get the material within the :ref:`Mesh<class_Mesh>` resource, use :ref:`Mesh.surface_get_material<class_Mesh_method_surface_get_material>` instead.
 
 
 .. rst-class:: classref-item-separator
 .. rst-class:: classref-item-separator
 
 
@@ -271,7 +273,7 @@ Returns the override :ref:`Material<class_Material>` for the specified ``surface
 
 
 :ref:`int<class_int>` **get_surface_override_material_count** **(** **)** |const|
 :ref:`int<class_int>` **get_surface_override_material_count** **(** **)** |const|
 
 
-Returns the number of surface override materials. This is equivalent to :ref:`Mesh.get_surface_count<class_Mesh_method_get_surface_count>`.
+Returns the number of surface override materials. This is equivalent to :ref:`Mesh.get_surface_count<class_Mesh_method_get_surface_count>`. See also :ref:`get_surface_override_material<class_MeshInstance3D_method_get_surface_override_material>`.
 
 
 .. rst-class:: classref-item-separator
 .. rst-class:: classref-item-separator
 
 
@@ -297,6 +299,8 @@ void **set_surface_override_material** **(** :ref:`int<class_int>` surface, :ref
 
 
 Sets the override ``material`` for the specified ``surface`` of the :ref:`Mesh<class_Mesh>` resource. This material is associated with this **MeshInstance3D** rather than with :ref:`mesh<class_MeshInstance3D_property_mesh>`.
 Sets the override ``material`` for the specified ``surface`` of the :ref:`Mesh<class_Mesh>` resource. This material is associated with this **MeshInstance3D** rather than with :ref:`mesh<class_MeshInstance3D_property_mesh>`.
 
 
+\ **Note:** This assigns the :ref:`Material<class_Material>` associated to the **MeshInstance3D**'s Surface Material Override properties, not the material within the :ref:`Mesh<class_Mesh>` resource. To set the material within the :ref:`Mesh<class_Mesh>` resource, use :ref:`Mesh.surface_get_material<class_Mesh_method_surface_get_material>` instead.
+
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`

+ 1 - 1
classes/class_node.rst

@@ -12,7 +12,7 @@ Node
 
 
 **Inherits:** :ref:`Object<class_Object>`
 **Inherits:** :ref:`Object<class_Object>`
 
 
-**Inherited By:** :ref:`AnimationPlayer<class_AnimationPlayer>`, :ref:`AnimationTree<class_AnimationTree>`, :ref:`AudioStreamPlayer<class_AudioStreamPlayer>`, :ref:`CanvasItem<class_CanvasItem>`, :ref:`CanvasLayer<class_CanvasLayer>`, :ref:`EditorFileSystem<class_EditorFileSystem>`, :ref:`EditorPlugin<class_EditorPlugin>`, :ref:`EditorResourcePreview<class_EditorResourcePreview>`, :ref:`HTTPRequest<class_HTTPRequest>`, :ref:`InstancePlaceholder<class_InstancePlaceholder>`, :ref:`MissingNode<class_MissingNode>`, :ref:`MultiplayerSpawner<class_MultiplayerSpawner>`, :ref:`MultiplayerSynchronizer<class_MultiplayerSynchronizer>`, :ref:`NavigationAgent2D<class_NavigationAgent2D>`, :ref:`NavigationAgent3D<class_NavigationAgent3D>`, :ref:`Node3D<class_Node3D>`, :ref:`ResourcePreloader<class_ResourcePreloader>`, :ref:`ShaderGlobalsOverride<class_ShaderGlobalsOverride>`, :ref:`SkeletonIK3D<class_SkeletonIK3D>`, :ref:`Timer<class_Timer>`, :ref:`Viewport<class_Viewport>`, :ref:`WorldEnvironment<class_WorldEnvironment>`
+**Inherited By:** :ref:`AnimationMixer<class_AnimationMixer>`, :ref:`AudioStreamPlayer<class_AudioStreamPlayer>`, :ref:`CanvasItem<class_CanvasItem>`, :ref:`CanvasLayer<class_CanvasLayer>`, :ref:`EditorFileSystem<class_EditorFileSystem>`, :ref:`EditorPlugin<class_EditorPlugin>`, :ref:`EditorResourcePreview<class_EditorResourcePreview>`, :ref:`HTTPRequest<class_HTTPRequest>`, :ref:`InstancePlaceholder<class_InstancePlaceholder>`, :ref:`MissingNode<class_MissingNode>`, :ref:`MultiplayerSpawner<class_MultiplayerSpawner>`, :ref:`MultiplayerSynchronizer<class_MultiplayerSynchronizer>`, :ref:`NavigationAgent2D<class_NavigationAgent2D>`, :ref:`NavigationAgent3D<class_NavigationAgent3D>`, :ref:`Node3D<class_Node3D>`, :ref:`ResourcePreloader<class_ResourcePreloader>`, :ref:`ShaderGlobalsOverride<class_ShaderGlobalsOverride>`, :ref:`SkeletonIK3D<class_SkeletonIK3D>`, :ref:`Timer<class_Timer>`, :ref:`Viewport<class_Viewport>`, :ref:`WorldEnvironment<class_WorldEnvironment>`
 
 
 Base class for all scene objects.
 Base class for all scene objects.
 
 

+ 3 - 3
classes/class_rootmotionview.rst

@@ -12,14 +12,14 @@ RootMotionView
 
 
 **Inherits:** :ref:`VisualInstance3D<class_VisualInstance3D>` **<** :ref:`Node3D<class_Node3D>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 **Inherits:** :ref:`VisualInstance3D<class_VisualInstance3D>` **<** :ref:`Node3D<class_Node3D>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
 
-Editor-only helper for setting up root motion in :ref:`AnimationTree<class_AnimationTree>`.
+Editor-only helper for setting up root motion in :ref:`AnimationMixer<class_AnimationMixer>`.
 
 
 .. rst-class:: classref-introduction-group
 .. rst-class:: classref-introduction-group
 
 
 Description
 Description
 -----------
 -----------
 
 
-*Root motion* refers to an animation technique where a mesh's skeleton is used to give impulse to a character. When working with 3D animations, a popular technique is for animators to use the root skeleton bone to give motion to the rest of the skeleton. This allows animating characters in a way where steps actually match the floor below. It also allows precise interaction with objects during cinematics. See also :ref:`AnimationTree<class_AnimationTree>`.
+*Root motion* refers to an animation technique where a mesh's skeleton is used to give impulse to a character. When working with 3D animations, a popular technique is for animators to use the root skeleton bone to give motion to the rest of the skeleton. This allows animating characters in a way where steps actually match the floor below. It also allows precise interaction with objects during cinematics. See also :ref:`AnimationMixer<class_AnimationMixer>`.
 
 
 \ **Note:** **RootMotionView** is only visible in the editor. It will be hidden automatically in the running project.
 \ **Note:** **RootMotionView** is only visible in the editor. It will be hidden automatically in the running project.
 
 
@@ -70,7 +70,7 @@ Property Descriptions
 - void **set_animation_path** **(** :ref:`NodePath<class_NodePath>` value **)**
 - void **set_animation_path** **(** :ref:`NodePath<class_NodePath>` value **)**
 - :ref:`NodePath<class_NodePath>` **get_animation_path** **(** **)**
 - :ref:`NodePath<class_NodePath>` **get_animation_path** **(** **)**
 
 
-Path to an :ref:`AnimationTree<class_AnimationTree>` node to use as a basis for root motion.
+Path to an :ref:`AnimationMixer<class_AnimationMixer>` node to use as a basis for root motion.
 
 
 .. rst-class:: classref-item-separator
 .. rst-class:: classref-item-separator
 
 

+ 1 - 1
classes/class_staticbody2d.rst

@@ -21,7 +21,7 @@ A 2D physics body that can't be moved by external forces. When moved manually, i
 Description
 Description
 -----------
 -----------
 
 
-A static 2D physics body. It can't be moved by external forces or contacts, but can be moved manually by other means such as code, :ref:`AnimationPlayer<class_AnimationPlayer>`\ s (with :ref:`AnimationPlayer.playback_process_mode<class_AnimationPlayer_property_playback_process_mode>` set to :ref:`AnimationPlayer.ANIMATION_PROCESS_PHYSICS<class_AnimationPlayer_constant_ANIMATION_PROCESS_PHYSICS>`), and :ref:`RemoteTransform2D<class_RemoteTransform2D>`.
+A static 2D physics body. It can't be moved by external forces or contacts, but can be moved manually by other means such as code, :ref:`AnimationMixer<class_AnimationMixer>`\ s (with :ref:`AnimationMixer.callback_mode_process<class_AnimationMixer_property_callback_mode_process>` set to :ref:`AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_PHYSICS<class_AnimationMixer_constant_ANIMATION_CALLBACK_MODE_PROCESS_PHYSICS>`), and :ref:`RemoteTransform2D<class_RemoteTransform2D>`.
 
 
 When **StaticBody2D** is moved, it is teleported to its new position without affecting other physics bodies in its path. If this is not desired, use :ref:`AnimatableBody2D<class_AnimatableBody2D>` instead.
 When **StaticBody2D** is moved, it is teleported to its new position without affecting other physics bodies in its path. If this is not desired, use :ref:`AnimatableBody2D<class_AnimatableBody2D>` instead.
 
 

+ 1 - 1
classes/class_staticbody3d.rst

@@ -21,7 +21,7 @@ A 3D physics body that can't be moved by external forces. When moved manually, i
 Description
 Description
 -----------
 -----------
 
 
-A static 3D physics body. It can't be moved by external forces or contacts, but can be moved manually by other means such as code, :ref:`AnimationPlayer<class_AnimationPlayer>`\ s (with :ref:`AnimationPlayer.playback_process_mode<class_AnimationPlayer_property_playback_process_mode>` set to :ref:`AnimationPlayer.ANIMATION_PROCESS_PHYSICS<class_AnimationPlayer_constant_ANIMATION_PROCESS_PHYSICS>`), and :ref:`RemoteTransform3D<class_RemoteTransform3D>`.
+A static 3D physics body. It can't be moved by external forces or contacts, but can be moved manually by other means such as code, :ref:`AnimationMixer<class_AnimationMixer>`\ s (with :ref:`AnimationMixer.callback_mode_process<class_AnimationMixer_property_callback_mode_process>` set to :ref:`AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_PHYSICS<class_AnimationMixer_constant_ANIMATION_CALLBACK_MODE_PROCESS_PHYSICS>`), and :ref:`RemoteTransform3D<class_RemoteTransform3D>`.
 
 
 When **StaticBody3D** is moved, it is teleported to its new position without affecting other physics bodies in its path. If this is not desired, use :ref:`AnimatableBody3D<class_AnimatableBody3D>` instead.
 When **StaticBody3D** is moved, it is teleported to its new position without affecting other physics bodies in its path. If this is not desired, use :ref:`AnimatableBody3D<class_AnimatableBody3D>` instead.
 
 

+ 127 - 33
classes/class_visualshadernodecustom.rst

@@ -44,39 +44,51 @@ Methods
 .. table::
 .. table::
    :widths: auto
    :widths: auto
 
 
-   +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`String<class_String>`                     | :ref:`_get_category<class_VisualShaderNodeCustom_method__get_category>` **(** **)** |virtual| |const|                                                                                                                                                           |
-   +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`String<class_String>`                     | :ref:`_get_code<class_VisualShaderNodeCustom_method__get_code>` **(** :ref:`String[]<class_String>` input_vars, :ref:`String[]<class_String>` output_vars, :ref:`Mode<enum_Shader_Mode>` mode, :ref:`Type<enum_VisualShader_Type>` type **)** |virtual| |const| |
-   +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`int<class_int>`                           | :ref:`_get_default_input_port<class_VisualShaderNodeCustom_method__get_default_input_port>` **(** :ref:`PortType<enum_VisualShaderNode_PortType>` type **)** |virtual| |const|                                                                                  |
-   +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`String<class_String>`                     | :ref:`_get_description<class_VisualShaderNodeCustom_method__get_description>` **(** **)** |virtual| |const|                                                                                                                                                     |
-   +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`String<class_String>`                     | :ref:`_get_func_code<class_VisualShaderNodeCustom_method__get_func_code>` **(** :ref:`Mode<enum_Shader_Mode>` mode, :ref:`Type<enum_VisualShader_Type>` type **)** |virtual| |const|                                                                            |
-   +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`String<class_String>`                     | :ref:`_get_global_code<class_VisualShaderNodeCustom_method__get_global_code>` **(** :ref:`Mode<enum_Shader_Mode>` mode **)** |virtual| |const|                                                                                                                  |
-   +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`int<class_int>`                           | :ref:`_get_input_port_count<class_VisualShaderNodeCustom_method__get_input_port_count>` **(** **)** |virtual| |const|                                                                                                                                           |
-   +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`String<class_String>`                     | :ref:`_get_input_port_name<class_VisualShaderNodeCustom_method__get_input_port_name>` **(** :ref:`int<class_int>` port **)** |virtual| |const|                                                                                                                  |
-   +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`PortType<enum_VisualShaderNode_PortType>` | :ref:`_get_input_port_type<class_VisualShaderNodeCustom_method__get_input_port_type>` **(** :ref:`int<class_int>` port **)** |virtual| |const|                                                                                                                  |
-   +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`String<class_String>`                     | :ref:`_get_name<class_VisualShaderNodeCustom_method__get_name>` **(** **)** |virtual| |const|                                                                                                                                                                   |
-   +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`int<class_int>`                           | :ref:`_get_output_port_count<class_VisualShaderNodeCustom_method__get_output_port_count>` **(** **)** |virtual| |const|                                                                                                                                         |
-   +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`String<class_String>`                     | :ref:`_get_output_port_name<class_VisualShaderNodeCustom_method__get_output_port_name>` **(** :ref:`int<class_int>` port **)** |virtual| |const|                                                                                                                |
-   +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`PortType<enum_VisualShaderNode_PortType>` | :ref:`_get_output_port_type<class_VisualShaderNodeCustom_method__get_output_port_type>` **(** :ref:`int<class_int>` port **)** |virtual| |const|                                                                                                                |
-   +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`PortType<enum_VisualShaderNode_PortType>` | :ref:`_get_return_icon_type<class_VisualShaderNodeCustom_method__get_return_icon_type>` **(** **)** |virtual| |const|                                                                                                                                           |
-   +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`bool<class_bool>`                         | :ref:`_is_available<class_VisualShaderNodeCustom_method__is_available>` **(** :ref:`Mode<enum_Shader_Mode>` mode, :ref:`Type<enum_VisualShader_Type>` type **)** |virtual| |const|                                                                              |
-   +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`bool<class_bool>`                         | :ref:`_is_highend<class_VisualShaderNodeCustom_method__is_highend>` **(** **)** |virtual| |const|                                                                                                                                                               |
-   +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`String<class_String>`                       | :ref:`_get_category<class_VisualShaderNodeCustom_method__get_category>` **(** **)** |virtual| |const|                                                                                                                                                           |
+   +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`String<class_String>`                       | :ref:`_get_code<class_VisualShaderNodeCustom_method__get_code>` **(** :ref:`String[]<class_String>` input_vars, :ref:`String[]<class_String>` output_vars, :ref:`Mode<enum_Shader_Mode>` mode, :ref:`Type<enum_VisualShader_Type>` type **)** |virtual| |const| |
+   +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`int<class_int>`                             | :ref:`_get_default_input_port<class_VisualShaderNodeCustom_method__get_default_input_port>` **(** :ref:`PortType<enum_VisualShaderNode_PortType>` type **)** |virtual| |const|                                                                                  |
+   +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`String<class_String>`                       | :ref:`_get_description<class_VisualShaderNodeCustom_method__get_description>` **(** **)** |virtual| |const|                                                                                                                                                     |
+   +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`String<class_String>`                       | :ref:`_get_func_code<class_VisualShaderNodeCustom_method__get_func_code>` **(** :ref:`Mode<enum_Shader_Mode>` mode, :ref:`Type<enum_VisualShader_Type>` type **)** |virtual| |const|                                                                            |
+   +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`String<class_String>`                       | :ref:`_get_global_code<class_VisualShaderNodeCustom_method__get_global_code>` **(** :ref:`Mode<enum_Shader_Mode>` mode **)** |virtual| |const|                                                                                                                  |
+   +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`int<class_int>`                             | :ref:`_get_input_port_count<class_VisualShaderNodeCustom_method__get_input_port_count>` **(** **)** |virtual| |const|                                                                                                                                           |
+   +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`Variant<class_Variant>`                     | :ref:`_get_input_port_default_value<class_VisualShaderNodeCustom_method__get_input_port_default_value>` **(** :ref:`int<class_int>` port **)** |virtual| |const|                                                                                                |
+   +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`String<class_String>`                       | :ref:`_get_input_port_name<class_VisualShaderNodeCustom_method__get_input_port_name>` **(** :ref:`int<class_int>` port **)** |virtual| |const|                                                                                                                  |
+   +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`PortType<enum_VisualShaderNode_PortType>`   | :ref:`_get_input_port_type<class_VisualShaderNodeCustom_method__get_input_port_type>` **(** :ref:`int<class_int>` port **)** |virtual| |const|                                                                                                                  |
+   +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`String<class_String>`                       | :ref:`_get_name<class_VisualShaderNodeCustom_method__get_name>` **(** **)** |virtual| |const|                                                                                                                                                                   |
+   +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`int<class_int>`                             | :ref:`_get_output_port_count<class_VisualShaderNodeCustom_method__get_output_port_count>` **(** **)** |virtual| |const|                                                                                                                                         |
+   +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`String<class_String>`                       | :ref:`_get_output_port_name<class_VisualShaderNodeCustom_method__get_output_port_name>` **(** :ref:`int<class_int>` port **)** |virtual| |const|                                                                                                                |
+   +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`PortType<enum_VisualShaderNode_PortType>`   | :ref:`_get_output_port_type<class_VisualShaderNodeCustom_method__get_output_port_type>` **(** :ref:`int<class_int>` port **)** |virtual| |const|                                                                                                                |
+   +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`int<class_int>`                             | :ref:`_get_property_count<class_VisualShaderNodeCustom_method__get_property_count>` **(** **)** |virtual| |const|                                                                                                                                               |
+   +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`int<class_int>`                             | :ref:`_get_property_default_index<class_VisualShaderNodeCustom_method__get_property_default_index>` **(** :ref:`int<class_int>` index **)** |virtual| |const|                                                                                                   |
+   +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`String<class_String>`                       | :ref:`_get_property_name<class_VisualShaderNodeCustom_method__get_property_name>` **(** :ref:`int<class_int>` index **)** |virtual| |const|                                                                                                                     |
+   +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`_get_property_options<class_VisualShaderNodeCustom_method__get_property_options>` **(** :ref:`int<class_int>` index **)** |virtual| |const|                                                                                                               |
+   +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`PortType<enum_VisualShaderNode_PortType>`   | :ref:`_get_return_icon_type<class_VisualShaderNodeCustom_method__get_return_icon_type>` **(** **)** |virtual| |const|                                                                                                                                           |
+   +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                           | :ref:`_is_available<class_VisualShaderNodeCustom_method__is_available>` **(** :ref:`Mode<enum_Shader_Mode>` mode, :ref:`Type<enum_VisualShader_Type>` type **)** |virtual| |const|                                                                              |
+   +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                           | :ref:`_is_highend<class_VisualShaderNodeCustom_method__is_highend>` **(** **)** |virtual| |const|                                                                                                                                                               |
+   +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`int<class_int>`                             | :ref:`get_option_index<class_VisualShaderNodeCustom_method_get_option_index>` **(** :ref:`int<class_int>` option **)** |const|                                                                                                                                  |
+   +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 
 .. rst-class:: classref-section-separator
 .. rst-class:: classref-section-separator
 
 
@@ -199,6 +211,20 @@ Defining this method is **required**. If not overridden, the node has no input p
 
 
 ----
 ----
 
 
+.. _class_VisualShaderNodeCustom_method__get_input_port_default_value:
+
+.. rst-class:: classref-method
+
+:ref:`Variant<class_Variant>` **_get_input_port_default_value** **(** :ref:`int<class_int>` port **)** |virtual| |const|
+
+Override this method to define the default value for the specified input port. Prefer use this over :ref:`VisualShaderNode.set_input_port_default_value<class_VisualShaderNode_method_set_input_port_default_value>`.
+
+Defining this method is **required**. If not overridden, the node has no default values for their input ports.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_VisualShaderNodeCustom_method__get_input_port_name:
 .. _class_VisualShaderNodeCustom_method__get_input_port_name:
 
 
 .. rst-class:: classref-method
 .. rst-class:: classref-method
@@ -283,6 +309,62 @@ Defining this method is **optional**, but recommended. If not overridden, output
 
 
 ----
 ----
 
 
+.. _class_VisualShaderNodeCustom_method__get_property_count:
+
+.. rst-class:: classref-method
+
+:ref:`int<class_int>` **_get_property_count** **(** **)** |virtual| |const|
+
+Override this method to define the number of the properties.
+
+Defining this method is **optional**.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_VisualShaderNodeCustom_method__get_property_default_index:
+
+.. rst-class:: classref-method
+
+:ref:`int<class_int>` **_get_property_default_index** **(** :ref:`int<class_int>` index **)** |virtual| |const|
+
+Override this method to define the default index of the property of the associated custom node.
+
+Defining this method is **optional**.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_VisualShaderNodeCustom_method__get_property_name:
+
+.. rst-class:: classref-method
+
+:ref:`String<class_String>` **_get_property_name** **(** :ref:`int<class_int>` index **)** |virtual| |const|
+
+Override this method to define the names of the property of the associated custom node.
+
+Defining this method is **optional**.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_VisualShaderNodeCustom_method__get_property_options:
+
+.. rst-class:: classref-method
+
+:ref:`PackedStringArray<class_PackedStringArray>` **_get_property_options** **(** :ref:`int<class_int>` index **)** |virtual| |const|
+
+Override this method to define the options inside the drop-down list property of the associated custom node.
+
+Defining this method is **optional**.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_VisualShaderNodeCustom_method__get_return_icon_type:
 .. _class_VisualShaderNodeCustom_method__get_return_icon_type:
 
 
 .. rst-class:: classref-method
 .. rst-class:: classref-method
@@ -321,6 +403,18 @@ Override this method to enable high-end mark in the Visual Shader Editor's membe
 
 
 Defining this method is **optional**. If not overridden, it's ``false``.
 Defining this method is **optional**. If not overridden, it's ``false``.
 
 
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_VisualShaderNodeCustom_method_get_option_index:
+
+.. rst-class:: classref-method
+
+:ref:`int<class_int>` **get_option_index** **(** :ref:`int<class_int>` option **)** |const|
+
+Returns the selected index of the drop-down list option within a graph. You may use this function to define the specific behavior in the :ref:`_get_code<class_VisualShaderNodeCustom_method__get_code>` or :ref:`_get_global_code<class_VisualShaderNodeCustom_method__get_global_code>`.
+
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`

+ 1 - 0
classes/index.rst

@@ -32,6 +32,7 @@ Nodes
     class_animatablebody3d
     class_animatablebody3d
     class_animatedsprite2d
     class_animatedsprite2d
     class_animatedsprite3d
     class_animatedsprite3d
+    class_animationmixer
     class_animationplayer
     class_animationplayer
     class_animationtree
     class_animationtree
     class_area2d
     class_area2d