<?xml version="1.0" encoding="UTF-8" ?>
<class name="Generic6DOFJoint3D" inherits="Joint3D" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
	<brief_description>
		A physics joint that allows for complex movement and rotation between two 3D physics bodies.
	</brief_description>
	<description>
		The [Generic6DOFJoint3D] (6 Degrees Of Freedom) joint allows for implementing custom types of joints by locking the rotation and translation of certain axes.
		The first 3 DOF represent the linear motion of the physics bodies and the last 3 DOF represent the angular motion of the physics bodies. Each axis can be either locked, or limited.
	</description>
	<tutorials>
	</tutorials>
	<methods>
		<method name="get_flag_x" qualifiers="const">
			<return type="bool" />
			<param index="0" name="flag" type="int" enum="Generic6DOFJoint3D.Flag" />
			<description>
			</description>
		</method>
		<method name="get_flag_y" qualifiers="const">
			<return type="bool" />
			<param index="0" name="flag" type="int" enum="Generic6DOFJoint3D.Flag" />
			<description>
			</description>
		</method>
		<method name="get_flag_z" qualifiers="const">
			<return type="bool" />
			<param index="0" name="flag" type="int" enum="Generic6DOFJoint3D.Flag" />
			<description>
			</description>
		</method>
		<method name="get_param_x" qualifiers="const">
			<return type="float" />
			<param index="0" name="param" type="int" enum="Generic6DOFJoint3D.Param" />
			<description>
			</description>
		</method>
		<method name="get_param_y" qualifiers="const">
			<return type="float" />
			<param index="0" name="param" type="int" enum="Generic6DOFJoint3D.Param" />
			<description>
			</description>
		</method>
		<method name="get_param_z" qualifiers="const">
			<return type="float" />
			<param index="0" name="param" type="int" enum="Generic6DOFJoint3D.Param" />
			<description>
			</description>
		</method>
		<method name="set_flag_x">
			<return type="void" />
			<param index="0" name="flag" type="int" enum="Generic6DOFJoint3D.Flag" />
			<param index="1" name="value" type="bool" />
			<description>
			</description>
		</method>
		<method name="set_flag_y">
			<return type="void" />
			<param index="0" name="flag" type="int" enum="Generic6DOFJoint3D.Flag" />
			<param index="1" name="value" type="bool" />
			<description>
			</description>
		</method>
		<method name="set_flag_z">
			<return type="void" />
			<param index="0" name="flag" type="int" enum="Generic6DOFJoint3D.Flag" />
			<param index="1" name="value" type="bool" />
			<description>
			</description>
		</method>
		<method name="set_param_x">
			<return type="void" />
			<param index="0" name="param" type="int" enum="Generic6DOFJoint3D.Param" />
			<param index="1" name="value" type="float" />
			<description>
			</description>
		</method>
		<method name="set_param_y">
			<return type="void" />
			<param index="0" name="param" type="int" enum="Generic6DOFJoint3D.Param" />
			<param index="1" name="value" type="float" />
			<description>
			</description>
		</method>
		<method name="set_param_z">
			<return type="void" />
			<param index="0" name="param" type="int" enum="Generic6DOFJoint3D.Param" />
			<param index="1" name="value" type="float" />
			<description>
			</description>
		</method>
	</methods>
	<members>
		<member name="angular_limit_x/damping" type="float" setter="set_param_x" getter="get_param_x" default="1.0">
			The amount of rotational damping across the X axis.
			The lower, the longer an impulse from one side takes to travel to the other side.
		</member>
		<member name="angular_limit_x/enabled" type="bool" setter="set_flag_x" getter="get_flag_x" default="true">
			If [code]true[/code], rotation across the X axis is limited.
		</member>
		<member name="angular_limit_x/erp" type="float" setter="set_param_x" getter="get_param_x" default="0.5">
			When rotating across the X axis, this error tolerance factor defines how much the correction gets slowed down. The lower, the slower.
		</member>
		<member name="angular_limit_x/force_limit" type="float" setter="set_param_x" getter="get_param_x" default="0.0">
			The maximum amount of force that can occur, when rotating around the X axis.
		</member>
		<member name="angular_limit_x/lower_angle" type="float" setter="set_param_x" getter="get_param_x" default="0.0">
			The minimum rotation in negative direction to break loose and rotate around the X axis.
		</member>
		<member name="angular_limit_x/restitution" type="float" setter="set_param_x" getter="get_param_x" default="0.0">
			The amount of rotational restitution across the X axis. The lower, the more restitution occurs.
		</member>
		<member name="angular_limit_x/softness" type="float" setter="set_param_x" getter="get_param_x" default="0.5">
			The speed of all rotations across the X axis.
		</member>
		<member name="angular_limit_x/upper_angle" type="float" setter="set_param_x" getter="get_param_x" default="0.0">
			The minimum rotation in positive direction to break loose and rotate around the X axis.
		</member>
		<member name="angular_limit_y/damping" type="float" setter="set_param_y" getter="get_param_y" default="1.0">
			The amount of rotational damping across the Y axis. The lower, the more damping occurs.
		</member>
		<member name="angular_limit_y/enabled" type="bool" setter="set_flag_y" getter="get_flag_y" default="true">
			If [code]true[/code], rotation across the Y axis is limited.
		</member>
		<member name="angular_limit_y/erp" type="float" setter="set_param_y" getter="get_param_y" default="0.5">
			When rotating across the Y axis, this error tolerance factor defines how much the correction gets slowed down. The lower, the slower.
		</member>
		<member name="angular_limit_y/force_limit" type="float" setter="set_param_y" getter="get_param_y" default="0.0">
			The maximum amount of force that can occur, when rotating around the Y axis.
		</member>
		<member name="angular_limit_y/lower_angle" type="float" setter="set_param_y" getter="get_param_y" default="0.0">
			The minimum rotation in negative direction to break loose and rotate around the Y axis.
		</member>
		<member name="angular_limit_y/restitution" type="float" setter="set_param_y" getter="get_param_y" default="0.0">
			The amount of rotational restitution across the Y axis. The lower, the more restitution occurs.
		</member>
		<member name="angular_limit_y/softness" type="float" setter="set_param_y" getter="get_param_y" default="0.5">
			The speed of all rotations across the Y axis.
		</member>
		<member name="angular_limit_y/upper_angle" type="float" setter="set_param_y" getter="get_param_y" default="0.0">
			The minimum rotation in positive direction to break loose and rotate around the Y axis.
		</member>
		<member name="angular_limit_z/damping" type="float" setter="set_param_z" getter="get_param_z" default="1.0">
			The amount of rotational damping across the Z axis. The lower, the more damping occurs.
		</member>
		<member name="angular_limit_z/enabled" type="bool" setter="set_flag_z" getter="get_flag_z" default="true">
			If [code]true[/code], rotation across the Z axis is limited.
		</member>
		<member name="angular_limit_z/erp" type="float" setter="set_param_z" getter="get_param_z" default="0.5">
			When rotating across the Z axis, this error tolerance factor defines how much the correction gets slowed down. The lower, the slower.
		</member>
		<member name="angular_limit_z/force_limit" type="float" setter="set_param_z" getter="get_param_z" default="0.0">
			The maximum amount of force that can occur, when rotating around the Z axis.
		</member>
		<member name="angular_limit_z/lower_angle" type="float" setter="set_param_z" getter="get_param_z" default="0.0">
			The minimum rotation in negative direction to break loose and rotate around the Z axis.
		</member>
		<member name="angular_limit_z/restitution" type="float" setter="set_param_z" getter="get_param_z" default="0.0">
			The amount of rotational restitution across the Z axis. The lower, the more restitution occurs.
		</member>
		<member name="angular_limit_z/softness" type="float" setter="set_param_z" getter="get_param_z" default="0.5">
			The speed of all rotations across the Z axis.
		</member>
		<member name="angular_limit_z/upper_angle" type="float" setter="set_param_z" getter="get_param_z" default="0.0">
			The minimum rotation in positive direction to break loose and rotate around the Z axis.
		</member>
		<member name="angular_motor_x/enabled" type="bool" setter="set_flag_x" getter="get_flag_x" default="false">
			If [code]true[/code], a rotating motor at the X axis is enabled.
		</member>
		<member name="angular_motor_x/force_limit" type="float" setter="set_param_x" getter="get_param_x" default="300.0">
			Maximum acceleration for the motor at the X axis.
		</member>
		<member name="angular_motor_x/target_velocity" type="float" setter="set_param_x" getter="get_param_x" default="0.0">
			Target speed for the motor at the X axis.
		</member>
		<member name="angular_motor_y/enabled" type="bool" setter="set_flag_y" getter="get_flag_y" default="false">
			If [code]true[/code], a rotating motor at the Y axis is enabled.
		</member>
		<member name="angular_motor_y/force_limit" type="float" setter="set_param_y" getter="get_param_y" default="300.0">
			Maximum acceleration for the motor at the Y axis.
		</member>
		<member name="angular_motor_y/target_velocity" type="float" setter="set_param_y" getter="get_param_y" default="0.0">
			Target speed for the motor at the Y axis.
		</member>
		<member name="angular_motor_z/enabled" type="bool" setter="set_flag_z" getter="get_flag_z" default="false">
			If [code]true[/code], a rotating motor at the Z axis is enabled.
		</member>
		<member name="angular_motor_z/force_limit" type="float" setter="set_param_z" getter="get_param_z" default="300.0">
			Maximum acceleration for the motor at the Z axis.
		</member>
		<member name="angular_motor_z/target_velocity" type="float" setter="set_param_z" getter="get_param_z" default="0.0">
			Target speed for the motor at the Z axis.
		</member>
		<member name="angular_spring_x/damping" type="float" setter="set_param_x" getter="get_param_x" default="0.0">
		</member>
		<member name="angular_spring_x/enabled" type="bool" setter="set_flag_x" getter="get_flag_x" default="false">
		</member>
		<member name="angular_spring_x/equilibrium_point" type="float" setter="set_param_x" getter="get_param_x" default="0.0">
		</member>
		<member name="angular_spring_x/stiffness" type="float" setter="set_param_x" getter="get_param_x" default="0.0">
		</member>
		<member name="angular_spring_y/damping" type="float" setter="set_param_y" getter="get_param_y" default="0.0">
		</member>
		<member name="angular_spring_y/enabled" type="bool" setter="set_flag_y" getter="get_flag_y" default="false">
		</member>
		<member name="angular_spring_y/equilibrium_point" type="float" setter="set_param_y" getter="get_param_y" default="0.0">
		</member>
		<member name="angular_spring_y/stiffness" type="float" setter="set_param_y" getter="get_param_y" default="0.0">
		</member>
		<member name="angular_spring_z/damping" type="float" setter="set_param_z" getter="get_param_z" default="0.0">
		</member>
		<member name="angular_spring_z/enabled" type="bool" setter="set_flag_z" getter="get_flag_z" default="false">
		</member>
		<member name="angular_spring_z/equilibrium_point" type="float" setter="set_param_z" getter="get_param_z" default="0.0">
		</member>
		<member name="angular_spring_z/stiffness" type="float" setter="set_param_z" getter="get_param_z" default="0.0">
		</member>
		<member name="linear_limit_x/damping" type="float" setter="set_param_x" getter="get_param_x" default="1.0">
			The amount of damping that happens at the X motion.
		</member>
		<member name="linear_limit_x/enabled" type="bool" setter="set_flag_x" getter="get_flag_x" default="true">
			If [code]true[/code], the linear motion across the X axis is limited.
		</member>
		<member name="linear_limit_x/lower_distance" type="float" setter="set_param_x" getter="get_param_x" default="0.0">
			The minimum difference between the pivot points' X axis.
		</member>
		<member name="linear_limit_x/restitution" type="float" setter="set_param_x" getter="get_param_x" default="0.5">
			The amount of restitution on the X axis movement. The lower, the more momentum gets lost.
		</member>
		<member name="linear_limit_x/softness" type="float" setter="set_param_x" getter="get_param_x" default="0.7">
			A factor applied to the movement across the X axis. The lower, the slower the movement.
		</member>
		<member name="linear_limit_x/upper_distance" type="float" setter="set_param_x" getter="get_param_x" default="0.0">
			The maximum difference between the pivot points' X axis.
		</member>
		<member name="linear_limit_y/damping" type="float" setter="set_param_y" getter="get_param_y" default="1.0">
			The amount of damping that happens at the Y motion.
		</member>
		<member name="linear_limit_y/enabled" type="bool" setter="set_flag_y" getter="get_flag_y" default="true">
			If [code]true[/code], the linear motion across the Y axis is limited.
		</member>
		<member name="linear_limit_y/lower_distance" type="float" setter="set_param_y" getter="get_param_y" default="0.0">
			The minimum difference between the pivot points' Y axis.
		</member>
		<member name="linear_limit_y/restitution" type="float" setter="set_param_y" getter="get_param_y" default="0.5">
			The amount of restitution on the Y axis movement. The lower, the more momentum gets lost.
		</member>
		<member name="linear_limit_y/softness" type="float" setter="set_param_y" getter="get_param_y" default="0.7">
			A factor applied to the movement across the Y axis. The lower, the slower the movement.
		</member>
		<member name="linear_limit_y/upper_distance" type="float" setter="set_param_y" getter="get_param_y" default="0.0">
			The maximum difference between the pivot points' Y axis.
		</member>
		<member name="linear_limit_z/damping" type="float" setter="set_param_z" getter="get_param_z" default="1.0">
			The amount of damping that happens at the Z motion.
		</member>
		<member name="linear_limit_z/enabled" type="bool" setter="set_flag_z" getter="get_flag_z" default="true">
			If [code]true[/code], the linear motion across the Z axis is limited.
		</member>
		<member name="linear_limit_z/lower_distance" type="float" setter="set_param_z" getter="get_param_z" default="0.0">
			The minimum difference between the pivot points' Z axis.
		</member>
		<member name="linear_limit_z/restitution" type="float" setter="set_param_z" getter="get_param_z" default="0.5">
			The amount of restitution on the Z axis movement. The lower, the more momentum gets lost.
		</member>
		<member name="linear_limit_z/softness" type="float" setter="set_param_z" getter="get_param_z" default="0.7">
			A factor applied to the movement across the Z axis. The lower, the slower the movement.
		</member>
		<member name="linear_limit_z/upper_distance" type="float" setter="set_param_z" getter="get_param_z" default="0.0">
			The maximum difference between the pivot points' Z axis.
		</member>
		<member name="linear_motor_x/enabled" type="bool" setter="set_flag_x" getter="get_flag_x" default="false">
			If [code]true[/code], then there is a linear motor on the X axis. It will attempt to reach the target velocity while staying within the force limits.
		</member>
		<member name="linear_motor_x/force_limit" type="float" setter="set_param_x" getter="get_param_x" default="0.0">
			The maximum force the linear motor can apply on the X axis while trying to reach the target velocity.
		</member>
		<member name="linear_motor_x/target_velocity" type="float" setter="set_param_x" getter="get_param_x" default="0.0">
			The speed that the linear motor will attempt to reach on the X axis.
		</member>
		<member name="linear_motor_y/enabled" type="bool" setter="set_flag_y" getter="get_flag_y" default="false">
			If [code]true[/code], then there is a linear motor on the Y axis. It will attempt to reach the target velocity while staying within the force limits.
		</member>
		<member name="linear_motor_y/force_limit" type="float" setter="set_param_y" getter="get_param_y" default="0.0">
			The maximum force the linear motor can apply on the Y axis while trying to reach the target velocity.
		</member>
		<member name="linear_motor_y/target_velocity" type="float" setter="set_param_y" getter="get_param_y" default="0.0">
			The speed that the linear motor will attempt to reach on the Y axis.
		</member>
		<member name="linear_motor_z/enabled" type="bool" setter="set_flag_z" getter="get_flag_z" default="false">
			If [code]true[/code], then there is a linear motor on the Z axis. It will attempt to reach the target velocity while staying within the force limits.
		</member>
		<member name="linear_motor_z/force_limit" type="float" setter="set_param_z" getter="get_param_z" default="0.0">
			The maximum force the linear motor can apply on the Z axis while trying to reach the target velocity.
		</member>
		<member name="linear_motor_z/target_velocity" type="float" setter="set_param_z" getter="get_param_z" default="0.0">
			The speed that the linear motor will attempt to reach on the Z axis.
		</member>
		<member name="linear_spring_x/damping" type="float" setter="set_param_x" getter="get_param_x" default="0.01">
		</member>
		<member name="linear_spring_x/enabled" type="bool" setter="set_flag_x" getter="get_flag_x" default="false">
		</member>
		<member name="linear_spring_x/equilibrium_point" type="float" setter="set_param_x" getter="get_param_x" default="0.0">
		</member>
		<member name="linear_spring_x/stiffness" type="float" setter="set_param_x" getter="get_param_x" default="0.01">
		</member>
		<member name="linear_spring_y/damping" type="float" setter="set_param_y" getter="get_param_y" default="0.01">
		</member>
		<member name="linear_spring_y/enabled" type="bool" setter="set_flag_y" getter="get_flag_y" default="false">
		</member>
		<member name="linear_spring_y/equilibrium_point" type="float" setter="set_param_y" getter="get_param_y" default="0.0">
		</member>
		<member name="linear_spring_y/stiffness" type="float" setter="set_param_y" getter="get_param_y" default="0.01">
		</member>
		<member name="linear_spring_z/damping" type="float" setter="set_param_z" getter="get_param_z" default="0.01">
		</member>
		<member name="linear_spring_z/enabled" type="bool" setter="set_flag_z" getter="get_flag_z" default="false">
		</member>
		<member name="linear_spring_z/equilibrium_point" type="float" setter="set_param_z" getter="get_param_z" default="0.0">
		</member>
		<member name="linear_spring_z/stiffness" type="float" setter="set_param_z" getter="get_param_z" default="0.01">
		</member>
	</members>
	<constants>
		<constant name="PARAM_LINEAR_LOWER_LIMIT" value="0" enum="Param">
			The minimum difference between the pivot points' axes.
		</constant>
		<constant name="PARAM_LINEAR_UPPER_LIMIT" value="1" enum="Param">
			The maximum difference between the pivot points' axes.
		</constant>
		<constant name="PARAM_LINEAR_LIMIT_SOFTNESS" value="2" enum="Param">
			A factor applied to the movement across the axes. The lower, the slower the movement.
		</constant>
		<constant name="PARAM_LINEAR_RESTITUTION" value="3" enum="Param">
			The amount of restitution on the axes' movement. The lower, the more momentum gets lost.
		</constant>
		<constant name="PARAM_LINEAR_DAMPING" value="4" enum="Param">
			The amount of damping that happens at the linear motion across the axes.
		</constant>
		<constant name="PARAM_LINEAR_MOTOR_TARGET_VELOCITY" value="5" enum="Param">
			The velocity the linear motor will try to reach.
		</constant>
		<constant name="PARAM_LINEAR_MOTOR_FORCE_LIMIT" value="6" enum="Param">
			The maximum force the linear motor will apply while trying to reach the velocity target.
		</constant>
		<constant name="PARAM_LINEAR_SPRING_STIFFNESS" value="7" enum="Param">
		</constant>
		<constant name="PARAM_LINEAR_SPRING_DAMPING" value="8" enum="Param">
		</constant>
		<constant name="PARAM_LINEAR_SPRING_EQUILIBRIUM_POINT" value="9" enum="Param">
		</constant>
		<constant name="PARAM_ANGULAR_LOWER_LIMIT" value="10" enum="Param">
			The minimum rotation in negative direction to break loose and rotate around the axes.
		</constant>
		<constant name="PARAM_ANGULAR_UPPER_LIMIT" value="11" enum="Param">
			The minimum rotation in positive direction to break loose and rotate around the axes.
		</constant>
		<constant name="PARAM_ANGULAR_LIMIT_SOFTNESS" value="12" enum="Param">
			The speed of all rotations across the axes.
		</constant>
		<constant name="PARAM_ANGULAR_DAMPING" value="13" enum="Param">
			The amount of rotational damping across the axes. The lower, the more damping occurs.
		</constant>
		<constant name="PARAM_ANGULAR_RESTITUTION" value="14" enum="Param">
			The amount of rotational restitution across the axes. The lower, the more restitution occurs.
		</constant>
		<constant name="PARAM_ANGULAR_FORCE_LIMIT" value="15" enum="Param">
			The maximum amount of force that can occur, when rotating around the axes.
		</constant>
		<constant name="PARAM_ANGULAR_ERP" value="16" enum="Param">
			When rotating across the axes, this error tolerance factor defines how much the correction gets slowed down. The lower, the slower.
		</constant>
		<constant name="PARAM_ANGULAR_MOTOR_TARGET_VELOCITY" value="17" enum="Param">
			Target speed for the motor at the axes.
		</constant>
		<constant name="PARAM_ANGULAR_MOTOR_FORCE_LIMIT" value="18" enum="Param">
			Maximum acceleration for the motor at the axes.
		</constant>
		<constant name="PARAM_ANGULAR_SPRING_STIFFNESS" value="19" enum="Param">
		</constant>
		<constant name="PARAM_ANGULAR_SPRING_DAMPING" value="20" enum="Param">
		</constant>
		<constant name="PARAM_ANGULAR_SPRING_EQUILIBRIUM_POINT" value="21" enum="Param">
		</constant>
		<constant name="PARAM_MAX" value="22" enum="Param">
			Represents the size of the [enum Param] enum.
		</constant>
		<constant name="FLAG_ENABLE_LINEAR_LIMIT" value="0" enum="Flag">
			If enabled, linear motion is possible within the given limits.
		</constant>
		<constant name="FLAG_ENABLE_ANGULAR_LIMIT" value="1" enum="Flag">
			If enabled, rotational motion is possible within the given limits.
		</constant>
		<constant name="FLAG_ENABLE_LINEAR_SPRING" value="3" enum="Flag">
		</constant>
		<constant name="FLAG_ENABLE_ANGULAR_SPRING" value="2" enum="Flag">
		</constant>
		<constant name="FLAG_ENABLE_MOTOR" value="4" enum="Flag">
			If enabled, there is a rotational motor across these axes.
		</constant>
		<constant name="FLAG_ENABLE_LINEAR_MOTOR" value="5" enum="Flag">
			If enabled, there is a linear motor across these axes.
		</constant>
		<constant name="FLAG_MAX" value="6" enum="Flag">
			Represents the size of the [enum Flag] enum.
		</constant>
	</constants>
</class>
