<?xml version="1.0" encoding="UTF-8" ?>
<class name="IKModifier3D" inherits="SkeletonModifier3D" api_type="core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
	<brief_description>
		A node for inverse kinematics which may modify more than one bone.
	</brief_description>
	<description>
		Base class of [SkeletonModifier3D]s that has some joint lists and applies inverse kinematics. This class has some structs, enums, and helper methods which are useful to solve inverse kinematics.
	</description>
	<tutorials>
		<link title="Inverse Kinematics Returns to Godot 4.6 - IKModifier3D">https://godotengine.org/article/inverse-kinematics-returns-to-godot-4-6/#ikmodifier3d-and-7-child-classes</link>
	</tutorials>
	<methods>
		<method name="clear_settings">
			<return type="void" />
			<description>
				Clears all settings.
			</description>
		</method>
		<method name="get_setting_count" qualifiers="const">
			<return type="int" />
			<description>
				Returns the number of settings.
			</description>
		</method>
		<method name="reset">
			<return type="void" />
			<description>
				Resets a state with respect to the current bone pose.
			</description>
		</method>
		<method name="set_setting_count">
			<return type="void" />
			<param index="0" name="count" type="int" />
			<description>
				Sets the number of settings.
			</description>
		</method>
	</methods>
	<members>
		<member name="mutable_bone_axes" type="bool" setter="set_mutable_bone_axes" getter="are_bone_axes_mutable" default="true">
			If [code]true[/code], the solver retrieves the bone axis from the bone pose every frame.
			If [code]false[/code], the solver retrieves the bone axis from the bone rest and caches it, which increases performance slightly, but position changes in the bone pose made before processing this [IKModifier3D] are ignored.
		</member>
	</members>
</class>
