<?xml version="1.0" encoding="UTF-8" ?>
<class name="AnimationPlayer" inherits="Node" category="Core" version="3.2">
	<brief_description>
		Container and player of [Animation] resources.
	</brief_description>
	<description>
		An animation player is used for general purpose playback of [Animation] resources. It contains a dictionary of animations (referenced by name) and custom blend times between their transitions. Additionally, animations can be played and blended in different channels.
	</description>
	<tutorials>
		<link>https://docs.godotengine.org/en/latest/getting_started/step_by_step/animations.html</link>
		<link>https://docs.godotengine.org/en/latest/tutorials/animation/index.html</link>
	</tutorials>
	<demos>
	</demos>
	<methods>
		<method name="add_animation">
			<return type="int" enum="Error">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<argument index="1" name="animation" type="Animation">
			</argument>
			<description>
				Adds [code]animation[/code] to the player accessible with the key [code]name[/code].
			</description>
		</method>
		<method name="advance">
			<return type="void">
			</return>
			<argument index="0" name="delta" type="float">
			</argument>
			<description>
				Shifts position in the animation timeline. Delta is the time in seconds to shift. Events between the current frame and [code]delta[/code] are handled.
			</description>
		</method>
		<method name="animation_get_next" qualifiers="const">
			<return type="String">
			</return>
			<argument index="0" name="anim_from" type="String">
			</argument>
			<description>
				Returns the name of the next animation in the queue.
			</description>
		</method>
		<method name="animation_set_next">
			<return type="void">
			</return>
			<argument index="0" name="anim_from" type="String">
			</argument>
			<argument index="1" name="anim_to" type="String">
			</argument>
			<description>
				Triggers the [code]anim_to[/code] animation when the [code]anim_from[/code] animation completes.
			</description>
		</method>
		<method name="clear_caches">
			<return type="void">
			</return>
			<description>
				[AnimationPlayer] caches animated nodes. It may not notice if a node disappears, so clear_caches forces it to update the cache again.
			</description>
		</method>
		<method name="clear_queue">
			<return type="void">
			</return>
			<description>
				Clears all queued, unplayed animations.
			</description>
		</method>
		<method name="find_animation" qualifiers="const">
			<return type="String">
			</return>
			<argument index="0" name="animation" type="Animation">
			</argument>
			<description>
				Returns the name of [code]animation[/code] or empty string if not found.
			</description>
		</method>
		<method name="get_animation" qualifiers="const">
			<return type="Animation">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<description>
				Returns the [Animation] with key [code]name[/code] or [code]null[/code] if not found.
			</description>
		</method>
		<method name="get_animation_list" qualifiers="const">
			<return type="PoolStringArray">
			</return>
			<description>
				Returns the list of stored animation names.
			</description>
		</method>
		<method name="get_blend_time" qualifiers="const">
			<return type="float">
			</return>
			<argument index="0" name="anim_from" type="String">
			</argument>
			<argument index="1" name="anim_to" type="String">
			</argument>
			<description>
				Get the blend time (in seconds) between two animations, referenced by their names.
			</description>
		</method>
		<method name="get_playing_speed" qualifiers="const">
			<return type="float">
			</return>
			<description>
				Get the actual playing speed of current animation or 0 if not playing. This speed is the [code]playback_speed[/code] property multiplied by [code]custom_speed[/code] argument specified when calling the [code]play[/code] method.
			</description>
		</method>
		<method name="get_queue">
			<return type="PoolStringArray">
			</return>
			<description>
			</description>
		</method>
		<method name="has_animation" qualifiers="const">
			<return type="bool">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<description>
				Returns [code]true[/code] if the [AnimationPlayer] stores an [Animation] with key [code]name[/code].
			</description>
		</method>
		<method name="is_playing" qualifiers="const">
			<return type="bool">
			</return>
			<description>
				Returns [code]true[/code] if playing an animation.
			</description>
		</method>
		<method name="play">
			<return type="void">
			</return>
			<argument index="0" name="name" type="String" default="&quot;&quot;">
			</argument>
			<argument index="1" name="custom_blend" type="float" default="-1">
			</argument>
			<argument index="2" name="custom_speed" type="float" default="1.0">
			</argument>
			<argument index="3" name="from_end" type="bool" default="false">
			</argument>
			<description>
				Play the animation with key [code]name[/code]. Custom speed and blend times can be set. If custom speed is negative (-1), 'from_end' being true can play the animation backwards.
				If the animation has been paused by [code]stop(true)[/code] it will be resumed. Calling [code]play()[/code] without arguments will also resume the animation.
			</description>
		</method>
		<method name="play_backwards">
			<return type="void">
			</return>
			<argument index="0" name="name" type="String" default="&quot;&quot;">
			</argument>
			<argument index="1" name="custom_blend" type="float" default="-1">
			</argument>
			<description>
				Play the animation with key [code]name[/code] in reverse.
				If the animation has been paused by [code]stop(true)[/code] it will be resumed backwards. Calling [code]play_backwards()[/code] without arguments will also resume the animation backwards.
			</description>
		</method>
		<method name="queue">
			<return type="void">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<description>
				Queue an animation for playback once the current one is done.
			</description>
		</method>
		<method name="remove_animation">
			<return type="void">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<description>
				Remove the animation with key [code]name[/code].
			</description>
		</method>
		<method name="rename_animation">
			<return type="void">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<argument index="1" name="newname" type="String">
			</argument>
			<description>
				Rename an existing animation with key [code]name[/code] to [code]newname[/code].
			</description>
		</method>
		<method name="seek">
			<return type="void">
			</return>
			<argument index="0" name="seconds" type="float">
			</argument>
			<argument index="1" name="update" type="bool" default="false">
			</argument>
			<description>
				Seek the animation to the [code]seconds[/code] point in time (in seconds). If [code]update[/code] is [code]true[/code], the animation updates too, otherwise it updates at process time. Events between the current frame and [code]seconds[/code] are skipped.
			</description>
		</method>
		<method name="set_blend_time">
			<return type="void">
			</return>
			<argument index="0" name="anim_from" type="String">
			</argument>
			<argument index="1" name="anim_to" type="String">
			</argument>
			<argument index="2" name="sec" type="float">
			</argument>
			<description>
				Specify a blend time (in seconds) between two animations, referenced by their names.
			</description>
		</method>
		<method name="stop">
			<return type="void">
			</return>
			<argument index="0" name="reset" type="bool" default="true">
			</argument>
			<description>
				Stop the currently playing animation. If [code]reset[/code] is [code]true[/code], the animation position is reset to [code]0[/code] and the playback speed is reset to [code]1.0[/code].
				If [code]reset[/code] is [code]false[/code], then calling [code]play()[/code] without arguments or [code]play("same_as_before")[/code] will resume the animation. Works the same for the [code]play_backwards()[/code] method.
			</description>
		</method>
	</methods>
	<members>
		<member name="assigned_animation" type="String" setter="set_assigned_animation" getter="get_assigned_animation">
			If playing, the current animation; otherwise, the animation last played. When set, would change the animation, but would not play it unless currently playing. See also [member current_animation].
		</member>
		<member name="autoplay" type="String" setter="set_autoplay" getter="get_autoplay">
			The name of the animation to play when the scene loads. Default value: [code]""[/code].
		</member>
		<member name="current_animation" type="String" setter="set_current_animation" getter="get_current_animation">
			The name of the current animation, "" if not playing anything. When being set, does not restart the animation. See also [method play]. Default value: [code]""[/code].
		</member>
		<member name="current_animation_length" type="float" setter="" getter="get_current_animation_length">
			The length (in seconds) of the currently being played animation.
		</member>
		<member name="current_animation_position" type="float" setter="" getter="get_current_animation_position">
			The position (in seconds) of the currently playing animation.
		</member>
		<member name="playback_active" type="bool" setter="set_active" getter="is_active">
			If [code]true[/code], updates animations in response to process-related notifications. Default value: [code]true[/code].
		</member>
		<member name="playback_default_blend_time" type="float" setter="set_default_blend_time" getter="get_default_blend_time">
			The default time in which to blend animations. Ranges from 0 to 4096 with 0.01 precision. Default value: [code]0[/code].
		</member>
		<member name="playback_process_mode" type="int" setter="set_animation_process_mode" getter="get_animation_process_mode" enum="AnimationPlayer.AnimationProcessMode">
			The process notification in which to update animations. Default value: [code]ANIMATION_PROCESS_IDLE[/code].
		</member>
		<member name="playback_speed" type="float" setter="set_speed_scale" getter="get_speed_scale">
			The speed scaling ratio. For instance, if this value is 1 then the animation plays at normal speed. If it's 0.5 then it plays at half speed. If it's 2 then it plays at double speed. Default value: [code]1[/code].
		</member>
		<member name="root_node" type="NodePath" setter="set_root" getter="get_root">
			The node from which node path references will travel. Default value: [code]".."[/code].
		</member>
	</members>
	<signals>
		<signal name="animation_changed">
			<argument index="0" name="old_name" type="String">
			</argument>
			<argument index="1" name="new_name" type="String">
			</argument>
			<description>
				If the currently being played animation changes, this signal will notify of such change.
			</description>
		</signal>
		<signal name="animation_finished">
			<argument index="0" name="anim_name" type="String">
			</argument>
			<description>
				Notifies when an animation finished playing.
			</description>
		</signal>
		<signal name="animation_started">
			<argument index="0" name="anim_name" type="String">
			</argument>
			<description>
				Notifies when an animation starts playing.
			</description>
		</signal>
		<signal name="caches_cleared">
			<description>
			</description>
		</signal>
	</signals>
	<constants>
		<constant name="ANIMATION_PROCESS_PHYSICS" value="0" enum="AnimationProcessMode">
			Process animation during the physics process. This is especially useful when animating physics bodies.
		</constant>
		<constant name="ANIMATION_PROCESS_IDLE" value="1" enum="AnimationProcessMode">
			Process animation during the idle process.
		</constant>
		<constant name="ANIMATION_PROCESS_MANUAL" value="2" enum="AnimationProcessMode">
			Do not process animation. Use the 'advance' method to process the animation manually.
		</constant>
	</constants>
</class>