<?xml version="1.0" encoding="UTF-8" ?>
<class name="PhysicsDirectBodyState2DExtension" inherits="PhysicsDirectBodyState2D" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
	<brief_description>
		Provides virtual methods that can be overridden to create custom [PhysicsDirectBodyState2D] implementations.
	</brief_description>
	<description>
		This class extends [PhysicsDirectBodyState2D] by providing additional virtual methods that can be overridden. When these methods are overridden, they will be called instead of the internal methods of the physics server.
		Intended for use with GDExtension to create custom implementations of [PhysicsDirectBodyState2D].
	</description>
	<tutorials>
	</tutorials>
	<methods>
		<method name="_add_constant_central_force" qualifiers="virtual required">
			<return type="void" />
			<param index="0" name="force" type="Vector2" />
			<description>
				Overridable version of [method PhysicsDirectBodyState2D.add_constant_central_force].
			</description>
		</method>
		<method name="_add_constant_force" qualifiers="virtual required">
			<return type="void" />
			<param index="0" name="force" type="Vector2" />
			<param index="1" name="position" type="Vector2" />
			<description>
				Overridable version of [method PhysicsDirectBodyState2D.add_constant_force].
			</description>
		</method>
		<method name="_add_constant_torque" qualifiers="virtual required">
			<return type="void" />
			<param index="0" name="torque" type="float" />
			<description>
				Overridable version of [method PhysicsDirectBodyState2D.add_constant_torque].
			</description>
		</method>
		<method name="_apply_central_force" qualifiers="virtual required">
			<return type="void" />
			<param index="0" name="force" type="Vector2" />
			<description>
				Overridable version of [method PhysicsDirectBodyState2D.apply_central_force].
			</description>
		</method>
		<method name="_apply_central_impulse" qualifiers="virtual required">
			<return type="void" />
			<param index="0" name="impulse" type="Vector2" />
			<description>
				Overridable version of [method PhysicsDirectBodyState2D.apply_central_impulse].
			</description>
		</method>
		<method name="_apply_force" qualifiers="virtual required">
			<return type="void" />
			<param index="0" name="force" type="Vector2" />
			<param index="1" name="position" type="Vector2" />
			<description>
				Overridable version of [method PhysicsDirectBodyState2D.apply_force].
			</description>
		</method>
		<method name="_apply_impulse" qualifiers="virtual required">
			<return type="void" />
			<param index="0" name="impulse" type="Vector2" />
			<param index="1" name="position" type="Vector2" />
			<description>
				Overridable version of [method PhysicsDirectBodyState2D.apply_impulse].
			</description>
		</method>
		<method name="_apply_torque" qualifiers="virtual required">
			<return type="void" />
			<param index="0" name="torque" type="float" />
			<description>
				Overridable version of [method PhysicsDirectBodyState2D.apply_torque].
			</description>
		</method>
		<method name="_apply_torque_impulse" qualifiers="virtual required">
			<return type="void" />
			<param index="0" name="impulse" type="float" />
			<description>
				Overridable version of [method PhysicsDirectBodyState2D.apply_torque_impulse].
			</description>
		</method>
		<method name="_get_angular_velocity" qualifiers="virtual required const">
			<return type="float" />
			<description>
				Implement to override the behavior of [member PhysicsDirectBodyState2D.angular_velocity] and its respective getter.
			</description>
		</method>
		<method name="_get_center_of_mass" qualifiers="virtual required const">
			<return type="Vector2" />
			<description>
				Implement to override the behavior of [member PhysicsDirectBodyState2D.center_of_mass] and its respective getter.
			</description>
		</method>
		<method name="_get_center_of_mass_local" qualifiers="virtual required const">
			<return type="Vector2" />
			<description>
				Implement to override the behavior of [member PhysicsDirectBodyState2D.center_of_mass_local] and its respective getter.
			</description>
		</method>
		<method name="_get_collision_layer" qualifiers="virtual required const">
			<return type="int" />
			<description>
			</description>
		</method>
		<method name="_get_collision_mask" qualifiers="virtual required const">
			<return type="int" />
			<description>
			</description>
		</method>
		<method name="_get_constant_force" qualifiers="virtual required const">
			<return type="Vector2" />
			<description>
				Overridable version of [method PhysicsDirectBodyState2D.get_constant_force].
			</description>
		</method>
		<method name="_get_constant_torque" qualifiers="virtual required const">
			<return type="float" />
			<description>
				Overridable version of [method PhysicsDirectBodyState2D.get_constant_torque].
			</description>
		</method>
		<method name="_get_contact_collider" qualifiers="virtual required const">
			<return type="RID" />
			<param index="0" name="contact_idx" type="int" />
			<description>
				Overridable version of [method PhysicsDirectBodyState2D.get_contact_collider].
			</description>
		</method>
		<method name="_get_contact_collider_id" qualifiers="virtual required const">
			<return type="int" />
			<param index="0" name="contact_idx" type="int" />
			<description>
				Overridable version of [method PhysicsDirectBodyState2D.get_contact_collider_id].
			</description>
		</method>
		<method name="_get_contact_collider_object" qualifiers="virtual required const">
			<return type="Object" />
			<param index="0" name="contact_idx" type="int" />
			<description>
				Overridable version of [method PhysicsDirectBodyState2D.get_contact_collider_object].
			</description>
		</method>
		<method name="_get_contact_collider_position" qualifiers="virtual required const">
			<return type="Vector2" />
			<param index="0" name="contact_idx" type="int" />
			<description>
				Overridable version of [method PhysicsDirectBodyState2D.get_contact_collider_position].
			</description>
		</method>
		<method name="_get_contact_collider_shape" qualifiers="virtual required const">
			<return type="int" />
			<param index="0" name="contact_idx" type="int" />
			<description>
				Overridable version of [method PhysicsDirectBodyState2D.get_contact_collider_shape].
			</description>
		</method>
		<method name="_get_contact_collider_velocity_at_position" qualifiers="virtual required const">
			<return type="Vector2" />
			<param index="0" name="contact_idx" type="int" />
			<description>
				Overridable version of [method PhysicsDirectBodyState2D.get_contact_collider_velocity_at_position].
			</description>
		</method>
		<method name="_get_contact_count" qualifiers="virtual required const">
			<return type="int" />
			<description>
				Overridable version of [method PhysicsDirectBodyState2D.get_contact_count].
			</description>
		</method>
		<method name="_get_contact_impulse" qualifiers="virtual required const">
			<return type="Vector2" />
			<param index="0" name="contact_idx" type="int" />
			<description>
				Overridable version of [method PhysicsDirectBodyState2D.get_contact_impulse].
			</description>
		</method>
		<method name="_get_contact_local_normal" qualifiers="virtual required const">
			<return type="Vector2" />
			<param index="0" name="contact_idx" type="int" />
			<description>
				Overridable version of [method PhysicsDirectBodyState2D.get_contact_local_normal].
			</description>
		</method>
		<method name="_get_contact_local_position" qualifiers="virtual required const">
			<return type="Vector2" />
			<param index="0" name="contact_idx" type="int" />
			<description>
				Overridable version of [method PhysicsDirectBodyState2D.get_contact_local_position].
			</description>
		</method>
		<method name="_get_contact_local_shape" qualifiers="virtual required const">
			<return type="int" />
			<param index="0" name="contact_idx" type="int" />
			<description>
				Overridable version of [method PhysicsDirectBodyState2D.get_contact_local_shape].
			</description>
		</method>
		<method name="_get_contact_local_velocity_at_position" qualifiers="virtual required const">
			<return type="Vector2" />
			<param index="0" name="contact_idx" type="int" />
			<description>
				Overridable version of [method PhysicsDirectBodyState2D.get_contact_local_velocity_at_position].
			</description>
		</method>
		<method name="_get_inverse_inertia" qualifiers="virtual required const">
			<return type="float" />
			<description>
				Implement to override the behavior of [member PhysicsDirectBodyState2D.inverse_inertia] and its respective getter.
			</description>
		</method>
		<method name="_get_inverse_mass" qualifiers="virtual required const">
			<return type="float" />
			<description>
				Implement to override the behavior of [member PhysicsDirectBodyState2D.inverse_mass] and its respective getter.
			</description>
		</method>
		<method name="_get_linear_velocity" qualifiers="virtual required const">
			<return type="Vector2" />
			<description>
				Implement to override the behavior of [member PhysicsDirectBodyState2D.linear_velocity] and its respective getter.
			</description>
		</method>
		<method name="_get_space_state" qualifiers="virtual required">
			<return type="PhysicsDirectSpaceState2D" />
			<description>
				Overridable version of [method PhysicsDirectBodyState2D.get_space_state].
			</description>
		</method>
		<method name="_get_step" qualifiers="virtual required const">
			<return type="float" />
			<description>
				Implement to override the behavior of [member PhysicsDirectBodyState2D.step] and its respective getter.
			</description>
		</method>
		<method name="_get_total_angular_damp" qualifiers="virtual required const">
			<return type="float" />
			<description>
				Implement to override the behavior of [member PhysicsDirectBodyState2D.total_angular_damp] and its respective getter.
			</description>
		</method>
		<method name="_get_total_gravity" qualifiers="virtual required const">
			<return type="Vector2" />
			<description>
				Implement to override the behavior of [member PhysicsDirectBodyState2D.total_gravity] and its respective getter.
			</description>
		</method>
		<method name="_get_total_linear_damp" qualifiers="virtual required const">
			<return type="float" />
			<description>
				Implement to override the behavior of [member PhysicsDirectBodyState2D.total_linear_damp] and its respective getter.
			</description>
		</method>
		<method name="_get_transform" qualifiers="virtual required const">
			<return type="Transform2D" />
			<description>
				Implement to override the behavior of [member PhysicsDirectBodyState2D.transform] and its respective getter.
			</description>
		</method>
		<method name="_get_velocity_at_local_position" qualifiers="virtual required const">
			<return type="Vector2" />
			<param index="0" name="local_position" type="Vector2" />
			<description>
				Overridable version of [method PhysicsDirectBodyState2D.get_velocity_at_local_position].
			</description>
		</method>
		<method name="_integrate_forces" qualifiers="virtual required">
			<return type="void" />
			<description>
				Overridable version of [method PhysicsDirectBodyState2D.integrate_forces].
			</description>
		</method>
		<method name="_is_sleeping" qualifiers="virtual required const">
			<return type="bool" />
			<description>
				Implement to override the behavior of [member PhysicsDirectBodyState2D.sleeping] and its respective getter.
			</description>
		</method>
		<method name="_set_angular_velocity" qualifiers="virtual required">
			<return type="void" />
			<param index="0" name="velocity" type="float" />
			<description>
				Implement to override the behavior of [member PhysicsDirectBodyState2D.angular_velocity] and its respective setter.
			</description>
		</method>
		<method name="_set_collision_layer" qualifiers="virtual required">
			<return type="void" />
			<param index="0" name="layer" type="int" />
			<description>
			</description>
		</method>
		<method name="_set_collision_mask" qualifiers="virtual required">
			<return type="void" />
			<param index="0" name="mask" type="int" />
			<description>
			</description>
		</method>
		<method name="_set_constant_force" qualifiers="virtual required">
			<return type="void" />
			<param index="0" name="force" type="Vector2" />
			<description>
				Overridable version of [method PhysicsDirectBodyState2D.set_constant_force].
			</description>
		</method>
		<method name="_set_constant_torque" qualifiers="virtual required">
			<return type="void" />
			<param index="0" name="torque" type="float" />
			<description>
				Overridable version of [method PhysicsDirectBodyState2D.set_constant_torque].
			</description>
		</method>
		<method name="_set_linear_velocity" qualifiers="virtual required">
			<return type="void" />
			<param index="0" name="velocity" type="Vector2" />
			<description>
				Implement to override the behavior of [member PhysicsDirectBodyState2D.linear_velocity] and its respective setter.
			</description>
		</method>
		<method name="_set_sleep_state" qualifiers="virtual required">
			<return type="void" />
			<param index="0" name="enabled" type="bool" />
			<description>
				Implement to override the behavior of [member PhysicsDirectBodyState2D.sleeping] and its respective setter.
			</description>
		</method>
		<method name="_set_transform" qualifiers="virtual required">
			<return type="void" />
			<param index="0" name="transform" type="Transform2D" />
			<description>
				Implement to override the behavior of [member PhysicsDirectBodyState2D.transform] and its respective setter.
			</description>
		</method>
	</methods>
</class>
