<?xml version="1.0" encoding="UTF-8" ?>
<class name="Skeleton" inherits="Spatial" category="Core" version="3.1">
	<brief_description>
		Skeleton for characters and animated objects.
	</brief_description>
	<description>
		Skeleton provides a hierarchical interface for managing bones, including pose, rest and animation (see [Animation]). Skeleton will support rag doll dynamics in the future.
		The overall transform of a bone with respect to the skeleton is determined by the following hierarchical order: rest pose, custom pose and pose.
		Note that "global pose" below refers to the overall transform of the bone with respect to skeleton, so it not the actual global/world transform of the bone.
	</description>
	<tutorials>
	</tutorials>
	<demos>
	</demos>
	<methods>
		<method name="add_bone">
			<return type="void">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<description>
				Add a bone, with name "name". [method get_bone_count] will become the bone index.
			</description>
		</method>
		<method name="bind_child_node_to_bone">
			<return type="void">
			</return>
			<argument index="0" name="bone_idx" type="int">
			</argument>
			<argument index="1" name="node" type="Node">
			</argument>
			<description>
				Deprecated soon.
			</description>
		</method>
		<method name="clear_bones">
			<return type="void">
			</return>
			<description>
				Clear all the bones in this skeleton.
			</description>
		</method>
		<method name="find_bone" qualifiers="const">
			<return type="int">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<description>
				Return the bone index that matches "name" as its name.
			</description>
		</method>
		<method name="get_bone_count" qualifiers="const">
			<return type="int">
			</return>
			<description>
				Return the amount of bones in the skeleton.
			</description>
		</method>
		<method name="get_bone_custom_pose" qualifiers="const">
			<return type="Transform">
			</return>
			<argument index="0" name="bone_idx" type="int">
			</argument>
			<description>
				Return the custom pose of the specified bone. Custom pose is applied on top of the rest pose.
			</description>
		</method>
		<method name="get_bone_global_pose" qualifiers="const">
			<return type="Transform">
			</return>
			<argument index="0" name="bone_idx" type="int">
			</argument>
			<description>
				Return the overall transform of the specified bone, with respect to the skeleton. Being relative to the skeleton frame, this is not the actual "global" transform of the bone.
			</description>
		</method>
		<method name="get_bone_name" qualifiers="const">
			<return type="String">
			</return>
			<argument index="0" name="bone_idx" type="int">
			</argument>
			<description>
				Return the name of the bone at index "index".
			</description>
		</method>
		<method name="get_bone_parent" qualifiers="const">
			<return type="int">
			</return>
			<argument index="0" name="bone_idx" type="int">
			</argument>
			<description>
				Return the bone index which is the parent of the bone at "bone_idx". If -1, then bone has no parent. Note that the parent bone returned will always be less than "bone_idx".
			</description>
		</method>
		<method name="get_bone_pose" qualifiers="const">
			<return type="Transform">
			</return>
			<argument index="0" name="bone_idx" type="int">
			</argument>
			<description>
				Return the pose transform of the specified bone. Pose is applied on top of the custom pose, which is applied on top the rest pose.
			</description>
		</method>
		<method name="get_bone_rest" qualifiers="const">
			<return type="Transform">
			</return>
			<argument index="0" name="bone_idx" type="int">
			</argument>
			<description>
				Return the rest transform for a bone "bone_idx".
			</description>
		</method>
		<method name="get_bone_transform" qualifiers="const">
			<return type="Transform">
			</return>
			<argument index="0" name="bone_idx" type="int">
			</argument>
			<description>
				Return the combination of custom pose and pose. The returned transform is in skeleton's reference frame.
			</description>
		</method>
		<method name="get_bound_child_nodes_to_bone" qualifiers="const">
			<return type="Array">
			</return>
			<argument index="0" name="bone_idx" type="int">
			</argument>
			<description>
				Deprecated soon.
			</description>
		</method>
		<method name="is_bone_rest_disabled" qualifiers="const">
			<return type="bool">
			</return>
			<argument index="0" name="bone_idx" type="int">
			</argument>
			<description>
			</description>
		</method>
		<method name="physical_bones_add_collision_exception">
			<return type="void">
			</return>
			<argument index="0" name="exception" type="RID">
			</argument>
			<description>
			</description>
		</method>
		<method name="physical_bones_remove_collision_exception">
			<return type="void">
			</return>
			<argument index="0" name="exception" type="RID">
			</argument>
			<description>
			</description>
		</method>
		<method name="physical_bones_start_simulation">
			<return type="void">
			</return>
			<argument index="0" name="bones" type="Array" default="[  ]">
			</argument>
			<description>
			</description>
		</method>
		<method name="physical_bones_stop_simulation">
			<return type="void">
			</return>
			<description>
			</description>
		</method>
		<method name="set_bone_custom_pose">
			<return type="void">
			</return>
			<argument index="0" name="bone_idx" type="int">
			</argument>
			<argument index="1" name="custom_pose" type="Transform">
			</argument>
			<description>
			</description>
		</method>
		<method name="set_bone_disable_rest">
			<return type="void">
			</return>
			<argument index="0" name="bone_idx" type="int">
			</argument>
			<argument index="1" name="disable" type="bool">
			</argument>
			<description>
			</description>
		</method>
		<method name="set_bone_global_pose">
			<return type="void">
			</return>
			<argument index="0" name="bone_idx" type="int">
			</argument>
			<argument index="1" name="pose" type="Transform">
			</argument>
			<description>
			</description>
		</method>
		<method name="set_bone_parent">
			<return type="void">
			</return>
			<argument index="0" name="bone_idx" type="int">
			</argument>
			<argument index="1" name="parent_idx" type="int">
			</argument>
			<description>
				Set the bone index "parent_idx" as the parent of the bone at "bone_idx". If -1, then bone has no parent. Note: "parent_idx" must be less than "bone_idx".
			</description>
		</method>
		<method name="set_bone_pose">
			<return type="void">
			</return>
			<argument index="0" name="bone_idx" type="int">
			</argument>
			<argument index="1" name="pose" type="Transform">
			</argument>
			<description>
				Return the pose transform for bone "bone_idx".
			</description>
		</method>
		<method name="set_bone_rest">
			<return type="void">
			</return>
			<argument index="0" name="bone_idx" type="int">
			</argument>
			<argument index="1" name="rest" type="Transform">
			</argument>
			<description>
				Set the rest transform for bone "bone_idx"
			</description>
		</method>
		<method name="unbind_child_node_from_bone">
			<return type="void">
			</return>
			<argument index="0" name="bone_idx" type="int">
			</argument>
			<argument index="1" name="node" type="Node">
			</argument>
			<description>
				Deprecated soon.
			</description>
		</method>
		<method name="unparent_bone_and_rest">
			<return type="void">
			</return>
			<argument index="0" name="bone_idx" type="int">
			</argument>
			<description>
			</description>
		</method>
	</methods>
	<constants>
		<constant name="NOTIFICATION_UPDATE_SKELETON" value="50">
		</constant>
	</constants>
</class>
