<?xml version="1.0" encoding="UTF-8" ?>
<class name="SpriteFrames" inherits="Resource" api_type="core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
	<brief_description>
		Sprite frame library for AnimatedSprite2D and AnimatedSprite3D.
	</brief_description>
	<description>
		Sprite frame library for an [AnimatedSprite2D] or [AnimatedSprite3D] node. Contains frames and animation data for playback.
	</description>
	<tutorials>
	</tutorials>
	<methods>
		<method name="add_animation">
			<return type="void" />
			<param index="0" name="anim" type="StringName" />
			<description>
				Adds a new [param anim] animation to the library.
			</description>
		</method>
		<method name="add_frame">
			<return type="void" />
			<param index="0" name="anim" type="StringName" />
			<param index="1" name="texture" type="Texture2D" />
			<param index="2" name="duration" type="float" default="1.0" />
			<param index="3" name="at_position" type="int" default="-1" />
			<description>
				Adds a frame to the [param anim] animation. If [param at_position] is [code]-1[/code], the frame will be added to the end of the animation. [param duration] specifies the relative duration, see [method get_frame_duration] for details.
			</description>
		</method>
		<method name="clear">
			<return type="void" />
			<param index="0" name="anim" type="StringName" />
			<description>
				Removes all frames from the [param anim] animation.
			</description>
		</method>
		<method name="clear_all">
			<return type="void" />
			<description>
				Removes all animations. An empty [code]default[/code] animation will be created.
			</description>
		</method>
		<method name="duplicate_animation">
			<return type="void" />
			<param index="0" name="anim_from" type="StringName" />
			<param index="1" name="anim_to" type="StringName" />
			<description>
				Duplicates the animation [param anim_from] to a new animation named [param anim_to]. Fails if [param anim_to] already exists, or if [param anim_from] does not exist.
			</description>
		</method>
		<method name="get_animation_loop" qualifiers="const" deprecated="Use [method get_animation_loop_mode] instead.">
			<return type="bool" />
			<param index="0" name="anim" type="StringName" />
			<description>
				Returns [code]true[/code] if [code]get_animation_loop_mode(anim) == LOOP_LINEAR[/code]. Otherwise, returns [code]false[/code].
			</description>
		</method>
		<method name="get_animation_loop_mode" qualifiers="const">
			<return type="int" enum="SpriteFrames.LoopMode" />
			<param index="0" name="anim" type="StringName" />
			<description>
				Returns the loop mode for the [param anim] animation.
			</description>
		</method>
		<method name="get_animation_names" qualifiers="const">
			<return type="PackedStringArray" />
			<description>
				Returns an array containing the names associated to each animation. Values are placed in alphabetical order.
			</description>
		</method>
		<method name="get_animation_speed" qualifiers="const">
			<return type="float" />
			<param index="0" name="anim" type="StringName" />
			<description>
				Returns the speed in frames per second for the [param anim] animation.
			</description>
		</method>
		<method name="get_frame_count" qualifiers="const">
			<return type="int" />
			<param index="0" name="anim" type="StringName" />
			<description>
				Returns the number of frames for the [param anim] animation.
			</description>
		</method>
		<method name="get_frame_duration" qualifiers="const">
			<return type="float" />
			<param index="0" name="anim" type="StringName" />
			<param index="1" name="idx" type="int" />
			<description>
				Returns a relative duration of the frame [param idx] in the [param anim] animation (defaults to [code]1.0[/code]). For example, a frame with a duration of [code]2.0[/code] is displayed twice as long as a frame with a duration of [code]1.0[/code]. You can calculate the absolute duration (in seconds) of a frame using the following formula:
				[codeblock]
				absolute_duration = relative_duration / (animation_fps * abs(playing_speed))
				[/codeblock]
				In this example, [code]playing_speed[/code] refers to either [method AnimatedSprite2D.get_playing_speed] or [method AnimatedSprite3D.get_playing_speed].
			</description>
		</method>
		<method name="get_frame_texture" qualifiers="const">
			<return type="Texture2D" />
			<param index="0" name="anim" type="StringName" />
			<param index="1" name="idx" type="int" />
			<description>
				Returns the texture of the frame [param idx] in the [param anim] animation.
			</description>
		</method>
		<method name="has_animation" qualifiers="const">
			<return type="bool" />
			<param index="0" name="anim" type="StringName" />
			<description>
				Returns [code]true[/code] if the [param anim] animation exists.
			</description>
		</method>
		<method name="remove_animation">
			<return type="void" />
			<param index="0" name="anim" type="StringName" />
			<description>
				Removes the [param anim] animation.
			</description>
		</method>
		<method name="remove_frame">
			<return type="void" />
			<param index="0" name="anim" type="StringName" />
			<param index="1" name="idx" type="int" />
			<description>
				Removes the [param anim] animation's frame [param idx].
			</description>
		</method>
		<method name="rename_animation">
			<return type="void" />
			<param index="0" name="anim" type="StringName" />
			<param index="1" name="newname" type="StringName" />
			<description>
				Changes the [param anim] animation's name to [param newname].
			</description>
		</method>
		<method name="set_animation_loop" deprecated="Use [method set_animation_loop_mode] instead.">
			<return type="void" />
			<param index="0" name="anim" type="StringName" />
			<param index="1" name="loop" type="bool" />
			<description>
				If [param loop] is [code]false[/code] equivalent to [code]set_animation_loop_mode(LOOP_NONE)[/code].
				If [param loop] is [code]true[/code] equivalent to [code]set_animation_loop_mode(LOOP_LINEAR)[/code].
			</description>
		</method>
		<method name="set_animation_loop_mode">
			<return type="void" />
			<param index="0" name="anim" type="StringName" />
			<param index="1" name="loop_mode" type="int" enum="SpriteFrames.LoopMode" />
			<description>
				Sets the [param loop_mode] for the [param anim] animation.
			</description>
		</method>
		<method name="set_animation_speed">
			<return type="void" />
			<param index="0" name="anim" type="StringName" />
			<param index="1" name="fps" type="float" />
			<description>
				Sets the speed for the [param anim] animation in frames per second.
			</description>
		</method>
		<method name="set_frame">
			<return type="void" />
			<param index="0" name="anim" type="StringName" />
			<param index="1" name="idx" type="int" />
			<param index="2" name="texture" type="Texture2D" />
			<param index="3" name="duration" type="float" default="1.0" />
			<description>
				Sets the [param texture] and the [param duration] of the frame [param idx] in the [param anim] animation. [param duration] specifies the relative duration, see [method get_frame_duration] for details.
			</description>
		</method>
	</methods>
	<constants>
		<constant name="LOOP_NONE" value="0" enum="LoopMode">
			The animation plays once and stops when it reaches the end, or the start if played in reverse.
		</constant>
		<constant name="LOOP_LINEAR" value="1" enum="LoopMode">
			The animation restarts from the beginning when it reaches the end, or from the end if played in reverse, repeating continuously.
		</constant>
		<constant name="LOOP_PINGPONG" value="2" enum="LoopMode">
			The animation alternates direction each time it reaches the end or start, playing forward and then in reverse repeatedly.
			[b]Note:[/b] Both [AnimatedSprite2D] and [AnimatedSprite3D] play the first/last frame for its duration only once at each end of the animation loop (instead of twice, once per forward/backward animation direction).
		</constant>
	</constants>
</class>
