<?xml version="1.0" encoding="UTF-8" ?>
<class name="AnimationNodeBlendTree" inherits="AnimationRootNode" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
	<brief_description>
		A sub-tree of many type [AnimationNode]s used for complex animations. Used by [AnimationTree].
	</brief_description>
	<description>
		This animation node may contain a sub-tree of any other type animation nodes, such as [AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], [AnimationNodeOneShot], etc. This is one of the most commonly used animation node roots.
		An [AnimationNodeOutput] node named [code]output[/code] is created by default.
	</description>
	<tutorials>
		<link title="Using AnimationTree">$DOCS_URL/tutorials/animation/animation_tree.html</link>
	</tutorials>
	<methods>
		<method name="add_node">
			<return type="void" />
			<param index="0" name="name" type="StringName" />
			<param index="1" name="node" type="AnimationNode" />
			<param index="2" name="position" type="Vector2" default="Vector2(0, 0)" />
			<description>
				Adds an [AnimationNode] at the given [param position]. The [param name] is used to identify the created sub animation node later.
			</description>
		</method>
		<method name="connect_node">
			<return type="void" />
			<param index="0" name="input_node" type="StringName" />
			<param index="1" name="input_index" type="int" />
			<param index="2" name="output_node" type="StringName" />
			<description>
				Connects the output of an [AnimationNode] as input for another [AnimationNode], at the input port specified by [param input_index].
			</description>
		</method>
		<method name="disconnect_node">
			<return type="void" />
			<param index="0" name="input_node" type="StringName" />
			<param index="1" name="input_index" type="int" />
			<description>
				Disconnects the animation node connected to the specified input.
			</description>
		</method>
		<method name="get_node" qualifiers="const">
			<return type="AnimationNode" />
			<param index="0" name="name" type="StringName" />
			<description>
				Returns the sub animation node with the specified [param name].
			</description>
		</method>
		<method name="get_node_list" qualifiers="const">
			<return type="StringName[]" />
			<description>
				Returns a list containing the names of all sub animation nodes in this blend tree.
			</description>
		</method>
		<method name="get_node_position" qualifiers="const">
			<return type="Vector2" />
			<param index="0" name="name" type="StringName" />
			<description>
				Returns the position of the sub animation node with the specified [param name].
			</description>
		</method>
		<method name="has_node" qualifiers="const">
			<return type="bool" />
			<param index="0" name="name" type="StringName" />
			<description>
				Returns [code]true[/code] if a sub animation node with specified [param name] exists.
			</description>
		</method>
		<method name="remove_node">
			<return type="void" />
			<param index="0" name="name" type="StringName" />
			<description>
				Removes a sub animation node.
			</description>
		</method>
		<method name="rename_node">
			<return type="void" />
			<param index="0" name="name" type="StringName" />
			<param index="1" name="new_name" type="StringName" />
			<description>
				Changes the name of a sub animation node.
			</description>
		</method>
		<method name="set_node_position">
			<return type="void" />
			<param index="0" name="name" type="StringName" />
			<param index="1" name="position" type="Vector2" />
			<description>
				Modifies the position of a sub animation node.
			</description>
		</method>
	</methods>
	<members>
		<member name="graph_offset" type="Vector2" setter="set_graph_offset" getter="get_graph_offset" default="Vector2(0, 0)">
			The global offset of all sub animation nodes.
		</member>
	</members>
	<signals>
		<signal name="node_changed">
			<param index="0" name="node_name" type="StringName" />
			<description>
				Emitted when the input port information is changed.
			</description>
		</signal>
	</signals>
	<constants>
		<constant name="CONNECTION_OK" value="0">
			The connection was successful.
		</constant>
		<constant name="CONNECTION_ERROR_NO_INPUT" value="1">
			The input node is [code]null[/code].
		</constant>
		<constant name="CONNECTION_ERROR_NO_INPUT_INDEX" value="2">
			The specified input port is out of range.
		</constant>
		<constant name="CONNECTION_ERROR_NO_OUTPUT" value="3">
			The output node is [code]null[/code].
		</constant>
		<constant name="CONNECTION_ERROR_SAME_NODE" value="4">
			Input and output nodes are the same.
		</constant>
		<constant name="CONNECTION_ERROR_CONNECTION_EXISTS" value="5">
			The specified connection already exists.
		</constant>
	</constants>
</class>
