<?xml version="1.0" encoding="UTF-8" ?>
<class name="ConeTwistJoint" inherits="Joint" category="Core" version="3.2">
	<brief_description>
		A twist joint between two 3D bodies.
	</brief_description>
	<description>
		The joint can rotate the bodies across an axis defined by the local x-axes of the [Joint].
		The twist axis is initiated as the X axis of the [Joint].
		Once the Bodies swing, the twist axis is calculated as the middle of the x-axes of the Joint in the local space of the two Bodies.
	</description>
	<tutorials>
	</tutorials>
	<methods>
		<method name="get_param" qualifiers="const">
			<return type="float">
			</return>
			<argument index="0" name="param" type="int" enum="ConeTwistJoint.Param">
			</argument>
			<description>
			</description>
		</method>
		<method name="set_param">
			<return type="void">
			</return>
			<argument index="0" name="param" type="int" enum="ConeTwistJoint.Param">
			</argument>
			<argument index="1" name="value" type="float">
			</argument>
			<description>
			</description>
		</method>
	</methods>
	<members>
		<member name="bias" type="float" setter="set_param" getter="get_param" default="0.3">
			The speed with which the swing or twist will take place.
			The higher, the faster.
		</member>
		<member name="relaxation" type="float" setter="set_param" getter="get_param" default="1.0">
			Defines, how fast the swing- and twist-speed-difference on both sides gets synced.
		</member>
		<member name="softness" type="float" setter="set_param" getter="get_param" default="0.8">
			The ease with which the joint starts to twist. If it's too low, it takes more force to start twisting the joint.
		</member>
		<member name="swing_span" type="float" setter="_set_swing_span" getter="_get_swing_span" default="45.0">
			Swing is rotation from side to side, around the axis perpendicular to the twist axis.
			The swing span defines, how much rotation will not get corrected along the swing axis.
			Could be defined as looseness in the [ConeTwistJoint].
			If below 0.05, this behavior is locked.
		</member>
		<member name="twist_span" type="float" setter="_set_twist_span" getter="_get_twist_span" default="180.0">
			Twist is the rotation around the twist axis, this value defined how far the joint can twist.
			Twist is locked if below 0.05.
		</member>
	</members>
	<constants>
		<constant name="PARAM_SWING_SPAN" value="0" enum="Param">
			Swing is rotation from side to side, around the axis perpendicular to the twist axis.
			The swing span defines, how much rotation will not get corrected along the swing axis.
			Could be defined as looseness in the [ConeTwistJoint].
			If below 0.05, this behavior is locked.
		</constant>
		<constant name="PARAM_TWIST_SPAN" value="1" enum="Param">
			Twist is the rotation around the twist axis, this value defined how far the joint can twist.
			Twist is locked if below 0.05.
		</constant>
		<constant name="PARAM_BIAS" value="2" enum="Param">
			The speed with which the swing or twist will take place.
			The higher, the faster.
		</constant>
		<constant name="PARAM_SOFTNESS" value="3" enum="Param">
			The ease with which the joint starts to twist. If it's too low, it takes more force to start twisting the joint.
		</constant>
		<constant name="PARAM_RELAXATION" value="4" enum="Param">
			Defines, how fast the swing- and twist-speed-difference on both sides gets synced.
		</constant>
		<constant name="PARAM_MAX" value="5" enum="Param">
			Represents the size of the [enum Param] enum.
		</constant>
	</constants>
</class>
