<?xml version="1.0" encoding="UTF-8" ?>
<class name="PhysicsDirectSpaceState3DExtension" inherits="PhysicsDirectSpaceState3D" 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 [PhysicsDirectSpaceState3D] implementations.
	</brief_description>
	<description>
		This class extends [PhysicsDirectSpaceState3D] 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 [PhysicsDirectSpaceState3D].
	</description>
	<tutorials>
	</tutorials>
	<methods>
		<method name="_cast_motion" qualifiers="virtual required">
			<return type="bool" />
			<param index="0" name="shape_rid" type="RID" />
			<param index="1" name="transform" type="Transform3D" />
			<param index="2" name="motion" type="Vector3" />
			<param index="3" name="margin" type="float" />
			<param index="4" name="collision_mask" type="int" />
			<param index="5" name="collide_with_bodies" type="bool" />
			<param index="6" name="collide_with_areas" type="bool" />
			<param index="7" name="closest_safe" type="float*" />
			<param index="8" name="closest_unsafe" type="float*" />
			<param index="9" name="info" type="PhysicsServer3DExtensionShapeRestInfo*" />
			<description>
			</description>
		</method>
		<method name="_collide_shape" qualifiers="virtual required">
			<return type="bool" />
			<param index="0" name="shape_rid" type="RID" />
			<param index="1" name="transform" type="Transform3D" />
			<param index="2" name="motion" type="Vector3" />
			<param index="3" name="margin" type="float" />
			<param index="4" name="collision_mask" type="int" />
			<param index="5" name="collide_with_bodies" type="bool" />
			<param index="6" name="collide_with_areas" type="bool" />
			<param index="7" name="results" type="void*" />
			<param index="8" name="max_results" type="int" />
			<param index="9" name="result_count" type="int32_t*" />
			<description>
			</description>
		</method>
		<method name="_get_closest_point_to_object_volume" qualifiers="virtual required const">
			<return type="Vector3" />
			<param index="0" name="object" type="RID" />
			<param index="1" name="point" type="Vector3" />
			<description>
			</description>
		</method>
		<method name="_intersect_point" qualifiers="virtual required">
			<return type="int" />
			<param index="0" name="position" type="Vector3" />
			<param index="1" name="collision_mask" type="int" />
			<param index="2" name="collide_with_bodies" type="bool" />
			<param index="3" name="collide_with_areas" type="bool" />
			<param index="4" name="results" type="PhysicsServer3DExtensionShapeResult*" />
			<param index="5" name="max_results" type="int" />
			<description>
			</description>
		</method>
		<method name="_intersect_ray" qualifiers="virtual required">
			<return type="bool" />
			<param index="0" name="from" type="Vector3" />
			<param index="1" name="to" type="Vector3" />
			<param index="2" name="collision_mask" type="int" />
			<param index="3" name="collide_with_bodies" type="bool" />
			<param index="4" name="collide_with_areas" type="bool" />
			<param index="5" name="hit_from_inside" type="bool" />
			<param index="6" name="hit_back_faces" type="bool" />
			<param index="7" name="pick_ray" type="bool" />
			<param index="8" name="result" type="PhysicsServer3DExtensionRayResult*" />
			<description>
			</description>
		</method>
		<method name="_intersect_shape" qualifiers="virtual required">
			<return type="int" />
			<param index="0" name="shape_rid" type="RID" />
			<param index="1" name="transform" type="Transform3D" />
			<param index="2" name="motion" type="Vector3" />
			<param index="3" name="margin" type="float" />
			<param index="4" name="collision_mask" type="int" />
			<param index="5" name="collide_with_bodies" type="bool" />
			<param index="6" name="collide_with_areas" type="bool" />
			<param index="7" name="result_count" type="PhysicsServer3DExtensionShapeResult*" />
			<param index="8" name="max_results" type="int" />
			<description>
			</description>
		</method>
		<method name="_rest_info" qualifiers="virtual required">
			<return type="bool" />
			<param index="0" name="shape_rid" type="RID" />
			<param index="1" name="transform" type="Transform3D" />
			<param index="2" name="motion" type="Vector3" />
			<param index="3" name="margin" type="float" />
			<param index="4" name="collision_mask" type="int" />
			<param index="5" name="collide_with_bodies" type="bool" />
			<param index="6" name="collide_with_areas" type="bool" />
			<param index="7" name="rest_info" type="PhysicsServer3DExtensionShapeRestInfo*" />
			<description>
			</description>
		</method>
		<method name="is_body_excluded_from_query" qualifiers="const">
			<return type="bool" />
			<param index="0" name="body" type="RID" />
			<description>
			</description>
		</method>
	</methods>
</class>
