<?xml version="1.0" encoding="UTF-8" ?>
<class name="BoneAttachment3D" inherits="Node3D" keywords="tag" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
	<brief_description>
		А node that dynamically copies or overrides the 3D transform of a bone in its parent [Skeleton3D].
	</brief_description>
	<description>
		This node selects a bone in a [Skeleton3D] and attaches to it. This means that the [BoneAttachment3D] node will either dynamically copy or override the 3D transform of the selected bone.
	</description>
	<tutorials>
	</tutorials>
	<methods>
		<method name="get_external_skeleton" qualifiers="const">
			<return type="NodePath" />
			<description>
				Returns the [NodePath] to the external [Skeleton3D] node, if one has been set.
			</description>
		</method>
		<method name="get_skeleton">
			<return type="Skeleton3D" />
			<description>
				Get parent or external [Skeleton3D] node if found.
			</description>
		</method>
		<method name="get_use_external_skeleton" qualifiers="const">
			<return type="bool" />
			<description>
				Returns whether the BoneAttachment3D node is using an external [Skeleton3D] rather than attempting to use its parent node as the [Skeleton3D].
			</description>
		</method>
		<method name="on_skeleton_update">
			<return type="void" />
			<description>
				A function that is called automatically when the [Skeleton3D] is updated. This function is where the [BoneAttachment3D] node updates its position so it is correctly bound when it is [i]not[/i] set to override the bone pose.
			</description>
		</method>
		<method name="set_external_skeleton">
			<return type="void" />
			<param index="0" name="external_skeleton" type="NodePath" />
			<description>
				Sets the [NodePath] to the external skeleton that the BoneAttachment3D node should use. See [method set_use_external_skeleton] to enable the external [Skeleton3D] node.
			</description>
		</method>
		<method name="set_use_external_skeleton">
			<return type="void" />
			<param index="0" name="use_external_skeleton" type="bool" />
			<description>
				Sets whether the BoneAttachment3D node will use an external [Skeleton3D] node rather than attempting to use its parent node as the [Skeleton3D]. When set to [code]true[/code], the BoneAttachment3D node will use the external [Skeleton3D] node set in [method set_external_skeleton].
			</description>
		</method>
	</methods>
	<members>
		<member name="bone_idx" type="int" setter="set_bone_idx" getter="get_bone_idx" default="-1">
			The index of the attached bone.
		</member>
		<member name="bone_name" type="String" setter="set_bone_name" getter="get_bone_name" default="&quot;&quot;">
			The name of the attached bone.
		</member>
		<member name="override_pose" type="bool" setter="set_override_pose" getter="get_override_pose" default="false">
			Whether the BoneAttachment3D node will override the bone pose of the bone it is attached to. When set to [code]true[/code], the BoneAttachment3D node can change the pose of the bone. When set to [code]false[/code], the BoneAttachment3D will always be set to the bone's transform.
			[b]Note:[/b] This override performs interruptively in the skeleton update process using signals due to the old design. It may cause unintended behavior when used at the same time with [SkeletonModifier3D].
		</member>
	</members>
</class>
