<?xml version="1.0" encoding="UTF-8" ?>
<class name="AnimationNodeBlendTree" inherits="AnimationRootNode" version="3.8">
	<brief_description>
		[AnimationTree] node resource that contains many blend type nodes.
	</brief_description>
	<description>
		This node may contain a sub-tree of any other blend type nodes, such as [AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], [AnimationNodeOneShot], etc. This is one of the most commonly used roots.
		An [AnimationNodeOutput] node named [code]output[/code] is created by default.
	</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="StringName" />
			<argument index="1" name="node" type="AnimationNode" />
			<argument index="2" name="position" type="Vector2" default="Vector2( 0, 0 )" />
			<description>
			</description>
		</method>
		<method name="connect_node">
			<return type="void" />
			<argument index="0" name="input_node" type="StringName" />
			<argument index="1" name="input_index" type="int" />
			<argument index="2" name="output_node" type="StringName" />
			<description>
			</description>
		</method>
		<method name="disconnect_node">
			<return type="void" />
			<argument index="0" name="input_node" type="StringName" />
			<argument index="1" name="input_index" type="int" />
			<description>
			</description>
		</method>
		<method name="get_node" qualifiers="const">
			<return type="AnimationNode" />
			<argument index="0" name="name" type="StringName" />
			<description>
			</description>
		</method>
		<method name="get_node_position" qualifiers="const">
			<return type="Vector2" />
			<argument index="0" name="name" type="StringName" />
			<description>
			</description>
		</method>
		<method name="has_node" qualifiers="const">
			<return type="bool" />
			<argument index="0" name="name" type="StringName" />
			<description>
			</description>
		</method>
		<method name="remove_node">
			<return type="void" />
			<argument index="0" name="name" type="StringName" />
			<description>
			</description>
		</method>
		<method name="rename_node">
			<return type="void" />
			<argument index="0" name="name" type="StringName" />
			<argument index="1" name="new_name" type="StringName" />
			<description>
			</description>
		</method>
		<method name="set_node_position">
			<return type="void" />
			<argument index="0" name="name" type="StringName" />
			<argument index="1" name="position" type="Vector2" />
			<description>
			</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-nodes.
		</member>
	</members>
	<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>
