<?xml version="1.0" encoding="UTF-8" ?>
<class name="BTPlayer" inherits="Node" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../doc/class.xsd">
	<brief_description>
		Player of [BehaviorTree] resources.
	</brief_description>
	<description>
		[BTPlayer] node is used to instantiate and play [BehaviorTree] resources at runtime. During initialization, the behavior tree instance is given references to the agent, the [member blackboard], and the current scene root. The agent can be specified by the [member agent_node] property (defaults to the BTPlayer's parent node).
		For an introduction to behavior trees, see [BehaviorTree].
	</description>
	<tutorials>
	</tutorials>
	<methods>
		<method name="get_bt_instance">
			<return type="BTInstance" />
			<description>
				Returns the behavior tree instance.
			</description>
		</method>
		<method name="restart">
			<return type="void" />
			<description>
				Resets the behavior tree's execution. Each running task will be aborted and the next tree execution will start anew. This method does not reset [Blackboard].
			</description>
		</method>
		<method name="set_bt_instance">
			<return type="void" />
			<param index="0" name="bt_instance" type="BTInstance" />
			<description>
				Sets the [BTInstance] to play. This method is useful when you want to switch to a different behavior tree instance at runtime. See also [method BehaviorTree.instantiate].
			</description>
		</method>
		<method name="set_scene_root_hint">
			<return type="void" />
			<param index="0" name="scene_root" type="Node" />
			<description>
				Sets the [Node] that will be used as the scene root for the newly instantiated behavior tree. Should be called before the [BTPlayer] is added to the scene tree (before [code]NOTIFICATION_READY[/code]). This is typically useful when creating [BTPlayer] nodes dynamically from code.
			</description>
		</method>
		<method name="update">
			<return type="void" />
			<param index="0" name="delta" type="float" />
			<description>
				Executes the root task of the behavior tree instance if [member active] is [code]true[/code]. Call this method when [member update_mode] is set to [constant MANUAL]. When [member update_mode] is not [constant MANUAL], the [method update] will be called automatically. See [enum UpdateMode].
			</description>
		</method>
	</methods>
	<members>
		<member name="active" type="bool" setter="set_active" getter="get_active" default="true">
			If [code]true[/code], the behavior tree will be executed during update.
		</member>
		<member name="agent_node" type="NodePath" setter="set_agent_node" getter="get_agent_node" default="NodePath(&quot;..&quot;)">
			Path to the node that will be used as the agent. Setting it after instantiation will have no effect.
		</member>
		<member name="behavior_tree" type="BehaviorTree" setter="set_behavior_tree" getter="get_behavior_tree">
			[BehaviorTree] resource to instantiate and execute at runtime.
		</member>
		<member name="blackboard" type="Blackboard" setter="set_blackboard" getter="get_blackboard">
			Holds data shared by the behavior tree tasks. See [Blackboard].
		</member>
		<member name="blackboard_plan" type="BlackboardPlan" setter="set_blackboard_plan" getter="get_blackboard_plan">
			Stores and manages variables that will be used in constructing new [Blackboard] instances.
		</member>
		<member name="monitor_performance" type="bool" setter="set_monitor_performance" getter="get_monitor_performance" default="false">
			If [code]true[/code], adds a performance monitor to "Debugger-&gt;Monitors" for each instance of this [BTPlayer] node.
		</member>
		<member name="update_mode" type="int" setter="set_update_mode" getter="get_update_mode" enum="BTPlayer.UpdateMode" default="1">
			Determines when the behavior tree is executed. See [enum UpdateMode].
		</member>
	</members>
	<signals>
		<signal name="behavior_tree_finished" deprecated="Use [signal updated] signal instead.">
			<param index="0" name="status" type="int" />
			<description>
				Emitted when the behavior tree has finished executing and returned [code]SUCCESS[/code] or [code]FAILURE[/code].
				Argument [param status] holds the status returned by the behavior tree. See [enum BT.Status].
			</description>
		</signal>
		<signal name="updated">
			<param index="0" name="status" type="int" />
			<description>
				Emitted when BTPlayer has finished the behavior tree update.
				Argument [param status] holds the status returned by the behavior tree. See [enum BT.Status].
			</description>
		</signal>
	</signals>
	<constants>
		<constant name="IDLE" value="0" enum="UpdateMode">
			Execute behavior tree during the idle process.
		</constant>
		<constant name="PHYSICS" value="1" enum="UpdateMode">
			Execute behavior tree during the physics process.
		</constant>
		<constant name="MANUAL" value="2" enum="UpdateMode">
			Behavior tree is executed manually by calling [method update].
		</constant>
	</constants>
</class>