<?xml version="1.0" encoding="UTF-8" ?>
<class name="AnimationNodeStateMachine" inherits="AnimationRootNode" version="3.6" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
	<brief_description>
		State machine for control of animations.
	</brief_description>
	<description>
		Contains multiple nodes representing animation states, connected in a graph. Node transitions can be configured to happen automatically or via code, using a shortest-path algorithm. Retrieve the [AnimationNodeStateMachinePlayback] object from the [AnimationTree] node to control it programmatically.
		[b]Example:[/b]
		[codeblock]
		var state_machine = $AnimationTree.get("parameters/playback")
		state_machine.travel("some_state")
		[/codeblock]
	</description>
	<tutorials>
		<link>$DOCS_URL/tutorials/animation/animation_tree.html</link>
	</tutorials>
	<methods>
		<method name="add_node">
			<return type="void" />
			<argument index="0" name="name" type="String" />
			<argument index="1" name="node" type="AnimationNode" />
			<argument index="2" name="position" type="Vector2" default="Vector2( 0, 0 )" />
			<description>
				Adds a new node to the graph. The [code]position[/code] is used for display in the editor.
			</description>
		</method>
		<method name="add_transition">
			<return type="void" />
			<argument index="0" name="from" type="String" />
			<argument index="1" name="to" type="String" />
			<argument index="2" name="transition" type="AnimationNodeStateMachineTransition" />
			<description>
				Adds a transition between the given nodes.
			</description>
		</method>
		<method name="get_end_node" qualifiers="const">
			<return type="String" />
			<description>
				Returns the graph's end node.
			</description>
		</method>
		<method name="get_graph_offset" qualifiers="const">
			<return type="Vector2" />
			<description>
				Returns the draw offset of the graph. Used for display in the editor.
			</description>
		</method>
		<method name="get_node" qualifiers="const">
			<return type="AnimationNode" />
			<argument index="0" name="name" type="String" />
			<description>
				Returns the animation node with the given name.
			</description>
		</method>
		<method name="get_node_name" qualifiers="const">
			<return type="String" />
			<argument index="0" name="node" type="AnimationNode" />
			<description>
				Returns the given animation node's name.
			</description>
		</method>
		<method name="get_node_position" qualifiers="const">
			<return type="Vector2" />
			<argument index="0" name="name" type="String" />
			<description>
				Returns the given node's coordinates. Used for display in the editor.
			</description>
		</method>
		<method name="get_start_node" qualifiers="const">
			<return type="String" />
			<description>
				Returns the graph's end node.
			</description>
		</method>
		<method name="get_transition" qualifiers="const">
			<return type="AnimationNodeStateMachineTransition" />
			<argument index="0" name="idx" type="int" />
			<description>
				Returns the given transition.
			</description>
		</method>
		<method name="get_transition_count" qualifiers="const">
			<return type="int" />
			<description>
				Returns the number of connections in the graph.
			</description>
		</method>
		<method name="get_transition_from" qualifiers="const">
			<return type="String" />
			<argument index="0" name="idx" type="int" />
			<description>
				Returns the given transition's start node.
			</description>
		</method>
		<method name="get_transition_to" qualifiers="const">
			<return type="String" />
			<argument index="0" name="idx" type="int" />
			<description>
				Returns the given transition's end node.
			</description>
		</method>
		<method name="has_node" qualifiers="const">
			<return type="bool" />
			<argument index="0" name="name" type="String" />
			<description>
				Returns [code]true[/code] if the graph contains the given node.
			</description>
		</method>
		<method name="has_transition" qualifiers="const">
			<return type="bool" />
			<argument index="0" name="from" type="String" />
			<argument index="1" name="to" type="String" />
			<description>
				Returns [code]true[/code] if there is a transition between the given nodes.
			</description>
		</method>
		<method name="remove_node">
			<return type="void" />
			<argument index="0" name="name" type="String" />
			<description>
				Deletes the given node from the graph.
			</description>
		</method>
		<method name="remove_transition">
			<return type="void" />
			<argument index="0" name="from" type="String" />
			<argument index="1" name="to" type="String" />
			<description>
				Deletes the transition between the two specified nodes.
			</description>
		</method>
		<method name="remove_transition_by_index">
			<return type="void" />
			<argument index="0" name="idx" type="int" />
			<description>
				Deletes the given transition by index.
			</description>
		</method>
		<method name="rename_node">
			<return type="void" />
			<argument index="0" name="name" type="String" />
			<argument index="1" name="new_name" type="String" />
			<description>
				Renames the given node.
			</description>
		</method>
		<method name="replace_node">
			<return type="void" />
			<argument index="0" name="name" type="String" />
			<argument index="1" name="node" type="AnimationNode" />
			<description>
				Replaces the node and keeps its transitions unchanged.
			</description>
		</method>
		<method name="set_end_node">
			<return type="void" />
			<argument index="0" name="name" type="String" />
			<description>
				Sets the given node as the graph end point.
			</description>
		</method>
		<method name="set_graph_offset">
			<return type="void" />
			<argument index="0" name="offset" type="Vector2" />
			<description>
				Sets the draw offset of the graph. Used for display in the editor.
			</description>
		</method>
		<method name="set_node_position">
			<return type="void" />
			<argument index="0" name="name" type="String" />
			<argument index="1" name="position" type="Vector2" />
			<description>
				Sets the node's coordinates. Used for display in the editor.
			</description>
		</method>
		<method name="set_start_node">
			<return type="void" />
			<argument index="0" name="name" type="String" />
			<description>
				Sets the given node as the graph start point.
			</description>
		</method>
	</methods>
	<constants>
	</constants>
</class>
